Javascript ng click需要单击两次才能更新视图
我这样打电话给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
<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}} , {{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}} , {{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()
手动触发摘要循环。