从浏览器控制台更改属性不会触发绑定

时间:2015-04-09 12:21:03

标签: javascript angularjs

这是我的控制器代码

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
  window.foo = {bar: 'Foobar'};
  $scope.foo = foo;
});

这是我的模板代码

<body ng-controller="MainCtrl">
  <p>Hello {{foo.bar}}!</p>
</body>

我尝试从Chrome控制台更改foo.bar的值,如下所示

foo.bar = "New Name"

但是我没有看到模板的变化,我是AngularJS的新手。谁能解释一下我在这里缺少什么?

您可以在此处查看演示http://plnkr.co/edit/MQv2wJdycAKN6MoajTkI?p=preview

注意:由于我们无法访问全局变量,因为它是iframe,我使用setTimeout(我故意不使用$timeout })在这个例子中

1 个答案:

答案 0 :(得分:0)

如果你使用范围超出角度的范围,你需要调用$ scope。$ apply如下:

  setTimeout(function() {
    $scope.$apply(function() {
      foo.bar = "From settimeout";
    });
  }, 3000);