Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ng click需要单击两次才能更新视图_Javascript_Html_Css_Angularjs - Fatal编程技术网

Javascript ng click需要单击两次才能更新视图

Javascript ng click需要单击两次才能更新视图,javascript,html,css,angularjs,Javascript,Html,Css,Angularjs,我这样打电话给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

我这样打电话给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);
  });
}
<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>
而我的HTML文件中有
ng repeat
如下所示:

<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);
  });
}
<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>

{{data.name}}
{{metadata.name},{{metadata.pivot.value}

我第一次单击时,会调用我的服务函数并更新我的模型,但我的视图不会更新。当我再次单击时,我的视图将正确更新。有人能告诉我为什么会发生这种情况吗?

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

是否使用
$http
获取数据?如果没有,请在填充数据后尝试
$scope.$apply()
。是的,我正在我的服务中使用$http。您可以为此创建一个plnkr/FIDLE吗?听起来好像摘要循环没有运行。Angular监视某些事件的发生(例如单击),并自动重新评估范围绑定。但是对于Angular不知道的事情,您需要使用
$scope.$apply()
手动触发摘要循环。