ng-click需要点击两次才能更新视图。

3
我这样调用了 ng-click:

<div ng-repeat="(key,value) in filterdata">
  <div ng-click="filter(key,value)">
    {{key}} ::::::: {{value}}
  </div>
</div>

我的控制器函数如下:

$scope.filter = function(key,value){
  $location.search(key, value);
  var filter = $location.url();
  service.get(filter).success(function(data) {
    $scope.applicationdata = data.data;
    console.log($scope.applicationdata);
  });
}

我的HTML文件中有以下这样的ng-repeat

<div class="resultsa" ng-repeat="data in applicationdata">
        {{data.name}}<hr>
        <div ng-repeat="metadata in data.metadata">
          {{metadata.name}}&nbsp;&nbsp;,&nbsp;&nbsp;{{metadata.pivot.value}}
          <hr>
        </div>
      </div>

第一次点击时,我的服务功能被调用并更新了我的模型,但是视图没有更新。第二次点击时,视图才正确地更新。有人能告诉我为什么会发生这种情况吗?

你是否正在使用 $http 获取数据?如果没有,请在填充数据后尝试使用 $scope.$apply() - Vinay K
是的,我在我的服务中使用了 $http。 - Tapan Bavaliya
2
你能为此创建一个 Plnkr/Fiddle 吗? - Vinay K
听起来像是摘要循环没有运行。Angular会监视某些事件的发生(例如点击),并自动重新评估作用域绑定。但对于发生在Angular无法知晓的事情,您需要使用$scope.$apply()手动触发摘要循环。 - bvaughn
1个回答

1
这是因为您在触发循环引用后,在不同的上下文中更改了模型的值。要解决此问题,您需要在设置应用程序数据后调用$scope.$apply(),以触发另一个循环引用周期。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接