动态更新和AngularJS

时间:2014-05-31 19:23:31

标签: javascript angularjs

我有这个......

<script> var num = 22;</script>

然后在控制器块内...

<span>{{somenumber}}</span>

在控制器......

$scope.somenumber = num;

这一切都按预期工作。

如果num变量的值发生变化,我将如何更新它?所以,我有一些代码(来自socket.io或AJAX)将num更改为65.现在,它仍然说22。

2 个答案:

答案 0 :(得分:3)

我要查看this

num是基本类型(Number)。因此,当您将其分配给$scope时,您需要将其复制。您需要做的是引用。我按照以下方式修复它。

<script>var value = {num: 22} </script>

$scope.value = value;

<span> {{value.num}} </span>

如果您的ajax呼叫不是通过$http。(在角度之外 - 无论您设置value.num的哪个位置),您都需要调用摘要周期。最简单的方法是使用像$timeout这样的角度服务。

将范围视为

  

$scope HAS 模型而不是$scope AS 模型

答案 1 :(得分:0)

您可以使用$watch后跟$apply

<强>控制器

$scope.somenumber = num;

$scope.$watch(function() {
  return num;
}, function(newValue, oldValue) {
  $scope.somenumber = newValue;
});

// fake external change to the 'num' variable
setTimeout(function() {
  num = 33;
  $scope.$apply();
}, 3000);

以下是一个工作示例:http://plnkr.co/edit/rL20lyI1SgS6keFbckJp?p=preview


如果您的外部更改发生在单个控制器的范围之外,我会在$rootScope回调中使用run

angular.module('exampleApp', []).run(function($rootScope) {
    // same as above, just with $rootScope
});