2014-01-10 72 views
1

您好我是Angularjs的新用戶。我正在更改下拉列表選擇中的$ scope變量。該範圍變量用於div上的ng-repeat。

的html代碼:

<div class="col-md-6" ng-repeat="model in FilteredModels | filter:{ModelText : '!All models'}:true"> 
      <div class="well"> 
      <div class="media"> 
       <div class="media-object small"><i class="pp-car"></i></div> 
       <div class="media-body"> 
       <div class="text-box">          
        <h3>{{model.ModelText}}</h3><span class="hr-small"></span> 
       </div> 
       <div class="dashboard-control clearfix"> 
        <div class="simple-metric text-left sub-metric"> 
        <div class="metric-title">Satisfaction score</div> 
        <div class="metric-number text-red">{{model.SatisfactionAvg | number:2}}</div> 
        </div> 
        <div class="simple-metric text-left sub-metric"> 
        <div class="metric-title">Total interviews</div> 
        <div class="metric-number">{{model.TotalInterviews}}</div> 
        </div> 
       </div> 
       <ul class="list-standard"> 
        <li> <a href="" ng-click="openModal($index)" class="text-black trigger-model-interviews">View interviews</a></li> 
       </ul> 
       </div> 
      </div> 
      </div> 
     </div> 

angularjs代碼:

function filtermodelbyId() { 
    $scope.FilteredModels = []; 

    dataFactory.getModelIdByFilter($scope.region, $scope.subregion).success($scope.handleSuccess).then(function (result) { 
     $scope.FilteredModelIds = result.data; 
    }); 

    if ($scope.FilteredModelIds != null && $scope.FilteredModelIds.length > 0) { 
     for (var j = $scope.FilteredModelIds.length - 1; j >= 0; j--) { 
      for (var i = $scope.models.length - 1; i >= 0; i--) { 
       if ($scope.models[i].ModelId == $scope.FilteredModelIds[j]) { 
        $scope.FilteredModels.push($scope.models[i]); 
       } 
      } 
     } 
    } 
} 

在下拉列表中的變化本filtermodelbyId()函數得到調用,我推新值,但這個被第二次改變後反映在下拉列表中。

有沒有更好的方法來表示這個。

謝謝。

+0

可能重複[如何從AJAX調用返回響應?](http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call) – Stewie

回答

1

你需要寫如果$scope.FilteredModelIds設置後

dataFactory.getModelIdByFilter($scope.region, $scope.subregion).success($scope.handleSuccess).then(function (result) { 
    $scope.FilteredModelIds = result.data; 
    if ($scope.FilteredModelIds != null && $scope.FilteredModelIds.length > 0) { 
     for (var j = $scope.FilteredModelIds.length - 1; j >= 0; j--) { 
      for (var i = $scope.models.length - 1; i >= 0; i--) { 
       if ($scope.models[i].ModelId == $scope.FilteredModelIds[j]) { 
        $scope.FilteredModels.push($scope.models[i]); 
       } 
      } 
     } 
    } 
}); 
2

好像你還沒有使用dataFactory.getModelIdByFilter$http。 嘗試使用

$scope.$apply(function(){ 
    $scope.FilteredModelIds = result.data; 
}); 

否則,您可以使用角度服務加載數據

0

只是快速胡亂猜測的(假設你正在使用jQuery阿賈克斯):

function filtermodelbyId() { 
    $scope.FilteredModels = []; 

    dataFactory.getModelIdByFilter($scope.region, $scope.subregion).success($scope.handleSuccess).then(function (result) { 
     $scope.FilteredModelIds = result.data; 

     if ($scope.FilteredModelIds != null && $scope.FilteredModelIds.length > 0) { 
      for (var j = $scope.FilteredModelIds.length - 1; j >= 0; j--) { 
       for (var i = $scope.models.length - 1; i >= 0; i--) { 
        if ($scope.models[i].ModelId == $scope.FilteredModelIds[j]) { 
        $scope.FilteredModels.push($scope.models[i]); 
        } 
       } 
      } 
     } 
    }); 
} 

改變模型數組在回調中。

+0

這就是數組沒有在回調中設置的問題,所以我得到了以前選擇的響應。 –

相關問題