简单明了。我有这个工厂:
ctrls.factory('dataLoad', ['$http', function($http) {
return {
loadFromJSON: loadFromJSON
}
function loadFromJSON() {
$http.get("data.json").then(function(response) {
return response;
});
}
}]);
这与我的控制器位于同一模块上。在典型的路由技术之后,控制器被绑定到模板,但是所有内容都被加载到index.html模板中,因此在控制器中注入“dataLoad”应该没有问题,这样做很好并且没有错误:
ctrls.controller('mainCtrl', ["$scope", "dataLoad", function($scope, dataLoad) {
在控制器中,我从方法调用loadFromJSON,然后调用该方法:
function loadData(){
dataLoad.loadFromJSON().then(function(data) {
$scope.allCharts = data;
console.log($scope.allCharts);
}).then(function(err){
console.log(err);
});
}
loadData();
但是,不知何故,这不起作用!它给了我以下错误:
错误:dataLoad.loadFromJSON(...)未定义
我做错了什么?
答案 0 :(得分:3)
loadFromJSON
没有return
语句,因此当您调用它时会返回undefined
。
您可能想要返回$http
返回的承诺。
function loadFromJSON() {
return $http.get("data.json");
}
(我删除了你放在那里的then
处理程序,因为它没有做任何事情。)