变量更新后ng-show表达式未更新

时间:2016-05-18 11:29:35

标签: javascript angularjs angularjs-ng-repeat ng-show

我有一个控制器,使用ulng-repeat打印一些数据。每个li分为两部分:

<li>
   <div>
       <button type="button" class="some classes" ng-show="!field.edit.state" ng-click="field.edit.update(true)">Edit</button>
      <button type="button" class="some classes" ng-show="field.edit.state" ng-click="field.edit.update(false)">Save</button>
  {{field.title}}
  </div>
  <div ng-show="field.edit.state">
      <input />
  </div>

这个想法是,当点击“编辑”按钮时,会显示input字段和“保存”按钮,而隐藏“编辑”按钮本身。点击“保存”按钮就可以了。由于我需要在编辑的开始和结束时执行一些函数,update也会从我的控制器触发一些回调。现在,回调被正确触发,状态被更新,但我的页面上没有任何变化。

更新功能代码非常简单:

  function registerEdit(callback){
      var state = false;

      var update = function(newState){
         state = newState;
         callback(newState)
         $timeout(function(){
             $scope.$apply()
         })
      }

      return {
         state : state,
         update : update
     }
}

当从服务器获取数据并将其注入registerEdit时,每个字段元素都会注入其自己的$scope属性,因此它们是唯一的(我已经检查过该部分,并且它可以正常工作) 。根据我对Angular的了解,在更改$scope之后我需要做的就是调用$apply函数让Angular改变我的视图,但即使状态改变(我记录了)显示保持不变。

0 个答案:

没有答案