服务和控制器之间的AngularJS数据绑定

时间:2014-08-29 16:55:03

标签: javascript angularjs scope

我想澄清一下与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

1 个答案:

答案 0 :(得分:0)

如果控制器位于同一模块&#39;应用程序中,则使用app.value(...)。