我在工厂,控制器和视图之间的数据同步时遇到问题。会发生什么是变量$ 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