我有一系列变量(我称之为 ArrVar ),这些变量可通过服务提供给所有控制器。此变量已作为 $ scope.ArrVar 在 CtrlA 中指定为范围变量。如果用户切换 CtrlA 下的按钮,则附加到 CtrlA 的方法将更改 $ scope.ArrVar ,更新服务中的变量,并使用ng-repeat显示列表。
但是我有一个完全独立的控制器, CtrlB ,它需要更改 CtrlA 下的范围变量,该变量无法从 CtrlB访问。
我可以想到两个解决方案:
但这两种方法似乎都不是最好的做法。这样做还有其他优雅的方式吗?两个控制器完全不同,因此合并不会。
答案 0 :(得分:1)
如果您共享特定于obj 的数据(如元素位置data.msg),它将与没有观看或任何内容的服务绑定。
app.controller('FirstCtrl', function($scope, Shared) {
$scope.data = Shared;
})
.controller('SecondCtrl', function($scope, Shared) {
$scope.data = Shared;
})
.factory('Shared', function() {
return { msg : ['one','two','three'] }
});
<div ng-controller="FirstCtrl">
<input ng-model="data.msg"/>
{{data}}
</div>
<div ng-controller="SecondCtrl">
<input ng-model="data.msg"/>
{{data}}
</div>