Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.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 从浏览器控制台更改属性不会触发绑定_Javascript_Angularjs - Fatal编程技术网

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

Javascript 从浏览器控制台更改属性不会触发绑定,javascript,angularjs,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> </bod

这是我的控制器代码

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>
但我看不到模板有什么变化,我是AngularJS的新手。有人能解释我在这里遗漏了什么吗

你可以在这里看到演示


注意:由于我们无法访问全局变量,因为它是一个iframe,所以我使用的是setTimeoutI。在本例中,我故意不使用$timeout

如果您在angular之外的范围内执行操作,则需要调用$scope。$apply如下所示:

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

这是因为控制台在angular之外,您需要调用$scope.$apply.@jcubic我明白了,这就是我所缺少的。你可以把它作为一个答案发表&我可以接受。@people down-voting这个问题:请发表一篇评论,说明你为什么要拒绝投票
  setTimeout(function() {
    $scope.$apply(function() {
      foo.bar = "From settimeout";
    });
  }, 3000);