0
我試圖共享一個$ http請求並返回它的值。但它似乎是'延期',並不會設定價值。
對於這個例子,我有2選擇框的汽車選擇。
app.controller('MainCtrl', function($scope, $http, LoadCars) {
LoadCars.async().success(function(data) {
$scope.cars = data;
$scope.carA = $scope.carB = data[0];
$scope.carAChanged();
$scope.carBChanged();
});
$scope.carAChanged = function() {
$scope.modelsA = $scope.carModels($scope.carA.c);
}
$scope.carBChanged = function() {
$scope.modelsB = $scope.carModels($scope.carB.c);
}
$scope.carModels = function(code) {
var promise = $http.get(code + '.json')
.success(function(data) {
//$scope.modelsA = data;
return data;
});
return promise;
}
});
HTML:
<fieldset>
<legend>Choice 1</legend>
<div><select ng-model="carA" ng-options="c.name for c in cars" ng-change="carAChanged()"></select></div>
<div><select ng-model="modelA" ng-options="m.c for m in modelsA"></select></div>
</fieldset>
<fieldset>
<legend>Choice 2</legend>
<div><select ng-model="carB" ng-options="c.name for c in cars" ng-change="carBChanged()"></select></div>
<div><select ng-model="modelB" ng-options="m.c for m in modelsB"></select></div>
</fieldset>
Plunker:http://plnkr.co/edit/5CFFGJ?p=preview
如果我去掉裏面$scope.carModels()
行,$scope.modelsA
負載所以控制器從cars.json
,其價值被分配到$scope.cars
裝載車很好。但我希望價值迴歸,因爲我需要單獨設置modelsB
。
我在做什麼錯?什麼是實現這一目標的正確方法?
這與我原來的相似。但我想有一種方法可以避免兩次寫同一個$ http語句。 – jzm
我正在研究可能有所幫助的更新服務。 1秒。 –
我更新了一點服務,但你真正需要的是一個下拉指令。 –