我在工廠,控制器和視圖之間的數據同步時遇到問題。會發生什麼是變量$ scope.supermarket在視圖加載後初始化。控制器 - 工廠視圖同步
我已經實現工廠是這樣的:
var main_module = angular.module("myApp", ["ngRoute"]);
main_module.factory('dataFactory', ["$http", "$q", function($http, $q){
var dataFactory = {};
dataFactory.getSupermarkets = function(){
var defer = $q.defer();
$http.get("http://127.0.0.1:8000/supermarkets/")
.then(function(response){
defer.resolve(response.data);
}, function(error){
defer.reject(error);
});
return defer.promise;
};
dataFactory.getEmployees = function(){
var defer = $q.defer();
$http.get("http://127.0.0.1:8000/employees/")
.then(function(response){
defer.resolve(response.data);
}, function(error){
defer.reject(error);
});
return defer.promise;
};
return dataFactory;
}
,這是我的控制器實現:
(function() {
'use strict';
var main_module = angular.module("myApp");
main_module.controller("EmployeeController", ["$scope", "$http", "dataFactory", function($scope, $http, dataFactory){
$scope.employees = [];
dataFactory.getEmployees().then(function(data){
$scope.employees = data;
}, function(error){
lert(JSON.stringify(error));
}
);
$scope.supermarkets = [];
dataFactory.getSupermarkets().then(function(data){
$scope.supermarkets = data;
}, function(error){
alert(JSON.stringify(error));
}
);
}]);
}());
視圖部分使用$ scope.supermarket變量是這樣的:
<div class="form-group">
<label class="control-label col-sm-2">SUPERMARKET:</label>
<div class="col-sm-5">
<select class="form-control" ng-options="s.name in supermarkets" ng-model="newEmployee.supermarket"></select>
</div>
</div>
加載視圖後,select字段始終爲空。
我仍然在學習AngularJS的過程中,所以任何幫助將非常感激。
控制檯中的任何錯誤?你檢查了網絡標籤,看看是否發送了超市的請求,並且它是否返回了一個非空數組?你有沒有試過調試你的代碼?請注意,您的承諾代碼使用反模式。使用鏈接:'return $ http.get('...')。then(function(response){return response.data;});' –
好吧,我按照你的建議重新實現了我的兩個工廠方法, - 選項部分作爲@Moncef Hassein-bey說,它現在起作用。謝謝! – Alen