AngularJS $ scope未在DOM中更新

时间:2016-01-16 10:26:46

标签: javascript angularjs angular-controller

我有以下代码:

状态(为简单起见,我们只是简单说明)

.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绑定控制器的其他部分模板上。

这是某种错误吗?或者我错过了什么?感谢。

1 个答案:

答案 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();
}];