Tapan Bavaliya
Tapan Bavaliya

Reputation: 155

ng-click requires two clicks for view to update

I called ng-click like this:

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

and my Controller function looks like this:

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

and my HTML file has ng-repeat like this:

<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>

The first time I click, my service function is called and my model is updated but my view doesn't update. When I click a second time, my view properly updates. Can anyone tell me why this happening?

Upvotes: 3

Views: 742

Answers (1)

juanramirezcastaneda
juanramirezcastaneda

Reputation: 103

This is because you are changing the value of the model after the digest cicle was triggered, and in a different context. For solving this you need to call $scope.$apply() after setting the application data, for triggering another digest cycle.

Upvotes: 1

Related Questions