如何在控制器与angularjs中的服务之间共享和更新数据

时间:2014-12-17 21:03:26

标签: angularjs service controller

现在我正在尝试在工厂的控制器之间共享数据。我想要的是每当我在controlA中更新我的输入值时,controlB中的值将被更新。你能指出我的问题在哪里吗?

var app = angular.module('app', []);
app.factory('share', function() {
    return {
        user: {}
    };
})
.controller('MainCtrl', function($scope, share) {
    $scope.user = {
        name: 'lin'
    };
    share.user.name = $scope.user.name;
    console.log(share.user.name);
})
.controller('linctr', function($scope, share) {
    $scope.super = {
        name: share.user.name
    };
});

HTML:

<div ng-controller="MainCtrl">
    <input ng-model="user.name" />    
</div>
<div ng-controller='linctr'>
    <div>{{super.name}}</div>
</div>

1 个答案:

答案 0 :(得分:1)

在第二个控制器中使用:

.controller('linctr', function($scope, share) {
    $scope.super = share.user;            
});

在这种情况下,$scope.super指向与share.user相同的对象。否则当你做

$scope.super = { 
    name: share.user.name
}; 

supershare.user对象没有关联,它只是为其属性name分配原始值。