我想澄清一下与AngularJS的数据绑定。 我希望有一个服务阵列,并与多个控制器共享。
我想,当控制器修改服务中的数据时,修改是在其他控制器中考虑的,他们的html模板自动更新。
不幸的是,我成功了一点,但没有采用角度方式,因为我使用Observer模式或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,我已经应用了这种方法。不幸的是,这些HOWTO没有使用数组对象而是使用String。这是一条可以遵循的道路吗?
在等待中我应用模式观察者和我通知从控制器到服务的事件,但在我看来它不是一个好的解决方案,因为它太冗长了。
Thaks
答案 0 :(得分:0)
如果控制器位于同一模块&#39;应用程序中,则使用app.value(...)。