angularjs:从外部范围访问内部范围

时间:2012-09-07 15:57:27

标签: scope angularjs

我正在尝试从angularjs应用程序中的子控制器内的父控制器移动位,以免过多地污染主控制器。 这是一个简化的小提琴:http://jsfiddle.net/terebentina/5RMPV/ 因此,当我单击更改按钮时,第三个字母应更改为“X”。 最初,item_change()函数位于主控制器内,并且正在执行$scope.items[idx] = 'X',这很好用。但是,因为我在ItemCtrl中移动了它,所以我不知道如何为第3个元素访问它。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:6)

将一些东西移出主控制器的一种方法是在服务或工厂内的控制器之间共享和更改数据(在this article中很好地描述)。

这是updated fiddle。您只需要将itemsService注入任何您想要访问项目数据的控制器。

angular.module('test', [])
    .service('itemsService', function(){
        var items = ['A', 'B', 'C', 'D'];

        return{
            getItems: function(){
                return items;
            },
            changeItem: function(index, value){
                items[index] = value;
            }
        }
    })
    .controller('MainCtrl', function($scope, itemsService) {
        $scope.items = itemsService.getItems();       

        $scope.change = function(idx) {
            itemsService.changeItem(idx, 'X');
        }

    })
相关问题