我正在使用John Papa风格指南。 https://github.com/johnpapa/angular-styleguide#style-y061。我喜欢这样的样式,它似乎使我的代码更容易阅读。但是,我按照单独的数据调用。
在这个John Papa中,将返回对象放在服务的顶部。函数语句的内部在底部创建,并在调用函数时提升到顶部。
getCustomerListComplete函数正在按照预期来安慰Json文件。我确保返回response.data。
问题是return语句似乎没有将数据发送到控制器。
return {
getCustomers: getCustomers
}
开始服务******
(function() {
angular
.module('app.services',[])
.factory('customersFactory', customersFactory);
function customersFactory($http, $log) {
return {
getCustomers: getCustomers
};
function getCustomers(){
$http.get('./Services/customers.json')
.then(getCustomerListComplete)
.catch(getCustomerListFailed);
function getCustomerListComplete(response) {
console.log('response.data',response.data);
return response.data;
}
function getCustomerListFailed(error) {
console.log('error', error);
}
}
}
}());
在我的控制器内部,我在承诺上遇到错误(然后)。注意到它无法读取undefined。
Cannot read property 'then' of undefined
这是我的控制器。我相信我正在设置并正确使用它。 正在注入customersFactory。 正在调用活动函数。不确定可能是什么问题。
(function() {
'use strict';
angular
.module('app.customers')
.controller('CustomerController', CustomerController);
function CustomerController($stateParams, customersFactory) {
var vm = this;
vm.customers = [];
vm.orders = null;
// table sorting
vm.sortBy = 'name';
vm.reverse = false;
vm.doSort = doSort;
activate()
function activate() {
return getCustomersList().then(function() {
console.log('activated')
});
}
function getCustomersList() {
return customersFactory.getCustomers()
.then(function(data) {
vm.customers = data;
return vm.customers;
});
}
function doSort(propName) {
vm.sortBy=propName;
vm.reverse=!vm.reverse
}
}
})();
答案 0 :(得分:2)
您需要在$http.get
内返回getCustomers
:
return $http.get('./Services/customers.json')
答案 1 :(得分:1)
我也遵循John Papa的风格指南,我从未见过他这样做,因为一切都应该在函数闭包内,即:
(function () {
....
})();
但是,是的,就像韦恩说你应该
return $http.get(...)
是的,如果他确实谈到在关闭之外返回,请试着告诉我在哪里。