4

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

任何帮助将非常感激。

4

1 回答 1

6

将内容移出主控制器的一种方法是在服务或工厂内的控制器之间共享数据并对其进行所有更改(在本文中有很好的描述)。

这是一个更新的小提琴。您只需要将 注入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');
        }

    })
于 2012-09-07T16:35:25.287 回答