为什么在角度中,当我们不分配函数时,范围属性的更改不会动态地反映回视图?

时间:2016-03-18 14:09:36

标签: javascript angularjs

html是:

<body ng-app='myModule' ng-controller='myController'>
  <div class="container">
    <br>

    <input class='form-control' type='number' min='0' ng-model='num'>
    <h1>{{result}}</h1>

  </div>

</body>

脚本文件:

angular.module('myModule',[]).controller('myController',function($scope){

    $scope.num=5;
    $scope.result=$scope.num*2;

});

result首次只会产生 10 ,然后input

的任何变化都会保持不变

由于result属性发生了变化,我认为由于input更改,预计会更改num

我知道如果我分配一个像:

这样的函数,它会起作用
$scope.result=function(){
        return $scope.num*2;
    }

<h1>{{result()}}</h1>

但为什么没有功能它不起作用?

2 个答案:

答案 0 :(得分:3)

因为当您在控制器中执行$scope.result=$scope.num*2;时,它只会被触发一次。如果你想让它在每个摘要周期被解雇(只要有变化),你需要像你一样使用一个函数,或者

 <h1>{{num * 2}}</h1>

答案 1 :(得分:0)

@inorganik回答得很好。 我将补充一点,如果您希望在$scope.num更改其值时绝对改变控制器中的$ scope.result值(或执行其他任务),则可以执行以下操作:

$scope.$watch('num', function (newValues) {
    console.log("you change the value");
    $scope.result = newValues*2
});