Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 服务和控制器之间的AngularJS数据绑定_Javascript_Angularjs_Scope - Fatal编程技术网

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

Javascript 服务和控制器之间的AngularJS数据绑定,javascript,angularjs,scope,Javascript,Angularjs,Scope,我想澄清一下AngularJS的数据绑定。 我希望使用一个阵列并与多个控制器共享它 我希望,当一个控制器修改服务中的数据时,其他控制器会考虑修改,而他们的html模板会自动更新 不幸的是,我成功了一点,但不是以角度的方式,因为我使用了观察者模式或角度。复制 当我尝试纯角度的方式时,它不起作用 下面是一个代码示例: 包含要共享的数据的服务 app.factory( "MyService", [ function () { myTableToShare = []; return

我想澄清一下AngularJS的数据绑定。 我希望使用一个阵列并与多个控制器共享它

我希望,当一个控制器修改服务中的数据时,其他控制器会考虑修改,而他们的html模板会自动更新

不幸的是,我成功了一点,但不是以角度的方式,因为我使用了观察者模式或角度。复制

当我尝试纯角度的方式时,它不起作用

下面是一个代码示例:

包含要共享的数据的服务

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;
    }] );
允许将表格数据打印到模板中的控制器

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>

  • {{element.id}-{{element.name}
由于不同的方法,我已经应用了这种方法。不幸的是,这些HOWTO并没有使用数组对象,而是使用字符串。这是一条要走的路吗

在等待中,我应用了模式observer et,将事件从控制器通知给服务,但在我看来,这不是一个好的解决方案,因为它太冗长了


Thaks

如果控制器位于同一模块“app”中,则使用app.value(…)。

您是否注意到类型:
myTableToShared:myTableToShare
?你能安装一个plunkr或JSFIDLE吗?