我想要实现的目标:
我尝试了很多不同的方法,但它只返回 undefined 。在我创建工厂之前,我直接在控制器中执行$ http.get而没有任何问题,但现在我正在尝试以更好的方式构建应用程序。
工厂:
app.factory("dataFactory", function($http) {
var factory = {};
factory.getSpec = function(specId) {
return $http.get('getSpec.aspx?specId=' + specId)
};
return factory;
});
控制器
app.controller('EditSpecController', function ($scope, $stateParams, $http, dataFactory) {
$scope.specId = $stateParams.specId;
$scope.formData = [];
if($scope.specId) { //If EDIT MODE
dataFactory.getSpec($scope.specId).then(function(response) {
$scope.formData = response.data;
$scope.use_unit = response.data.use_unit;
});
}
答案 0 :(得分:4)
正如你注意到$ http已经回复了承诺,所以你应该做更像这样的事情
factory.getSpec = function(specId) {
return $http.get('getSpec.aspx' + specId)
};
然后在控制器中
dataFactory.getSpec().then(function(response) {
$scope.formData = response.data;
});