2014-08-29 77 views
0

我想澄清一下与AngularJS的数据绑定。 我希望有一个服务阵列并与多个控制器共享。服务和控制器之间的AngularJS数据绑定

我想,当一个控制器修改服务中的数据,修改是考虑到其他控制器和他们的HTML模板自动更新。

不幸的是,我成功了一点点,但不能与成角度的方式,因为我用这个观察者模式或angular.copy ..

当我用纯角的方式尝试,这是行不通的。

这里的代码的示例:

包含DATAS到共享

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); 

     }; 
    }]); 

允许打印表的DATAS到模板

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> 

我已经应用这种方法感谢differents HOWTO。不幸的是这些HOWTO没有使用数组对象,而是一个String。这是一条路吗?

在等待我应用模式观察员等我通知事件从控制器到服务,但在我看来,它不是一个很好的解决方案,因为它太冗长。

Thaks

+0

你有没有注意到类型:'myTableToShared:myTableToShare'?你可以设置一个plunkr或jsfiddle吗? – apairet 2014-08-29 17:12:37

回答

0

使用app.value(...),如果控制器是在相同的模块 '应用程序'。

相关问题