我想要澄清与AngularJS的数据绑定。我希望在服务中有一个数组,并与多个控制器共享它。
当控制器修改服务中的数据时,我希望在其他控制器中考虑到修改,并自动更新他们的html模板。
不幸的是,我取得了一点成功,但不是以一种角度的方式,因为我使用了观察者模式或angular.copy..
当我用一种纯角度的方式尝试时,它不起作用。
这里有一个代码示例:
包含到共享的数据的服务
app.factory( "MyService", [
function () {
myTableToShare = [];
return {
myTableToShared : myTableToShare,
};
}
] );
修改服务数据的控制器
app.controller( 'AddCtrl', [
'$scope', 'MyService', function ( $scope, MyService ) {
$scope.myService = MyService;
$scope.addElementToSharedTable = function( element ) {
$scope.myService.myTableToShare.push( element );
};
}] );
允许将表的数据打印到模板中的控制器
app.controller( 'ReadCtrl', [
'$scope', 'MyService', function ( $scope, MyService ) {
$scope.myService = MyService;
}] );
**打印表**元素的模板
<div ng-controller="ReadCtrl">
<ul >
<li ng-repeat="element in myService.myTableToShare">
<span>{{element.id}} - {{element.name}}</span>
</li>
</ul> </div>
由于不同的操作方法,我已经应用了这个方法。不幸的是,这些HOWTO没有使用数组对象,而是使用字符串。这是一条可以走的路吗?
在等待过程中,我应用模式观测器et通知从控制器到服务的事件,但在我看来,这不是一个好的解决方案,因为它太冗长了。
塔克斯
发布于 2014-08-29 09:40:17
使用app.value(…)如果控制器在同一个模块'app‘中。
https://stackoverflow.com/questions/25572777
复制