我试图从
angularjs应用程序中的子控制器内的父控制器移动位,以免过多地污染主控制器.
这是一个简化的小提琴: http://jsfiddle.net/terebentina/5RMPV/
因此,当我单击更改按钮时,第三个字母应更改为“X”.
最初,item_change()函数在主控制器内,并且正在执行$scope.items [idx] =’X’,这很好用.但是,因为我在ItemCtrl中移动了它,所以我不知道如何为第3个元素访问它.
这是一个简化的小提琴: http://jsfiddle.net/terebentina/5RMPV/
因此,当我单击更改按钮时,第三个字母应更改为“X”.
最初,item_change()函数在主控制器内,并且正在执行$scope.items [idx] =’X’,这很好用.但是,因为我在ItemCtrl中移动了它,所以我不知道如何为第3个元素访问它.
任何帮助将非常感激.
解决方法
将事物移出主控制器的一种方法是在服务或工厂内的控制器之间共享和更改数据(在
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'); } })