我有以下代码:
状态(为简单起见,我们只是简单说明)
.state('foo', {
url: '/foo',
templateUrl: 'path/to/template.html',
controller:'fooCtrl',
})
控制器
controller = function($scope){
// not the actual code
$scope.barCount
}
template.html
<div>
<span>{{ barCount }}</span> // this is updating properly
</div>
其他html部分
<div ng-controller="fooCtrl">
<span>{{ barCount }}</span> // this is **NOT** updating properly
</div>
我的控制器上有一个scope
变量。双向绑定在{strong 1 <}上与控制器一起声明的模板上运行正常。但不是在我使用state
绑定控制器的其他部分模板上。
这是某种错误吗?或者我错过了什么?感谢。
答案 0 :(得分:3)
您有一个控制器,但该控制器有两个实例。每次使用ng-controller或在不同视图中声明它时,都会创建一个新实例,因此所有控制器都在不同的范围内。 在控制器之间共享数据的最佳方式是服务,因为它们是单例,因此它们有一个实例。 例如:
angular.module('app')
.factory('fooService', [function(){
var bar = 'Shared Data';
return {
getBar: function(){
return bar;
}
};
}])
.controller('FooController', ['fooService', function(fooService){
this.barCount = fooService.getBar();
// or use $scope.barCount = fooService.getBar();
}];