在 AngularJS 控制器之间共享数据? [复制]
Posted
技术标签:
【中文标题】在 AngularJS 控制器之间共享数据? [复制]【英文标题】:Sharing data between AngularJS controllers? [duplicate] 【发布时间】:2013-05-28 15:15:42 【问题描述】:如何将我在复选框中选择的项目与其他控制器一起存储?
我的尝试(见the plnkr 的观点):
script.js(控制器)
var myApp = angular.module('myApp', []);
myApp.factory('CooSelection', function ()
return selectedCoo: []
)
function CooListCtrl($scope, CooSelection)
$scope.coos = "Coos": ["spark", "nark", "hark", "quark"];
$scope.coo_list_selection = CooSelection;
$scope.checkSelection = function (item)
if ($scope.coo_list_selection.indexOf(item) === -1)
$scope.coo_list_selection.push(item);
else
$scope.coo_list_selection.splice($scope.coo_list_selection.lastIndexOf(item), 1);
CooListCtrl.$inject = ['$scope', 'CooSelection'];
function DebugCooList($scope, CooSelection)
$scope.coo_selection = CooSelection;
DebugCooList.$inject = ['$scope', 'CooSelection'];
【问题讨论】:
【参考方案1】:当您引用CooSelection
服务时,您期望的是一个数组,但工厂返回一个对象。你可以这样做:
myApp.factory('CooSelection', function ()
return []; // Return an array instead of an object.
)
另外,在您的DebugCooList
控制器中,您的范围属性与您在视图中检查的变量的名称不匹配。控制器代码分配给coo_selection
,但视图检查coo_list_selection
,因此您需要更改一个以匹配另一个。
【讨论】:
以上是关于在 AngularJS 控制器之间共享数据? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 angularjs ui-router 中的状态之间共享 $scope 数据?