对象内的范围变量不会更新

时间:2014-08-12 23:58:55

标签: javascript angularjs

我遇到了$scope.searchVal变量更新的问题,但是如果我将其分配到对象中,它似乎根本不会更新。

见下文:

<div ng-controller="MyCtrl">
  <div>{{searchVal}}</div>    
  <div>{{searchFilter}}</div>    
  <div>
      <input ng-model="searchVal"/>
  </div>
</div>

请参阅JSFiddle

如果我输入输入,div的第一个searchVal值会正确更新,但searchFilter包含$scope.searchVal的{​​{1}}对象值会更新设置为''的原始值,并且不会相应更新。

我通过调用函数考虑(并尝试)每次需要时更新整个对象,但这对我来说似乎真的很烦人。有一个简单的方法来完成这项工作吗?我错过了什么吗?

3 个答案:

答案 0 :(得分:0)

你所拥有的是$watch范围内的值,如:

Online Demo

$scope.$watch('searchVal',function(newVal, oldVal){
     $scope.searchFilter.search = newVal;
}); 

答案 1 :(得分:0)

它似乎并不像看起来那样直截了当,因为角度无法知道你是否想要动态绑定属性。

您可以使用$ watch服务实现您想要做的事情。关注searchVal&amp;用它来检测变化&amp;相应地更新对象属性。

答案 2 :(得分:-1)

请放$ watch。它总是会观察变量的值变化

$scope.$watch('searchVal',function(newVal, oldVal){
     $scope.searchFilter.search = newVal;
});

updated fiddle http://jsfiddle.net/be6s1eLo/3/