简单明了。我有这个工厂:
ctrls.factory('dataLoad', ['$http', function($http) {
return {
loadFromJSON: loadFromJSON
}
function loadFromJSON() {
$http.get("data.json").then(function(response) {
return response;
});
}
}]);
这与我的 Controller 位于同一模块上。 Controller 在典型的路由技术之后绑定(bind)到模板,但所有内容都加载到index.html模板中,因此在 Controller 中注入(inject)“dataLoad”应该没有问题,这工作得很好并且不会出现错误:
ctrls.controller('mainCtrl', ["$scope", "dataLoad", function($scope, dataLoad) {
在 Controller 中,我从一个方法调用 loadFromJSON,然后调用该方法:
function loadData(){
dataLoad.loadFromJSON().then(function(data) {
$scope.allCharts = data;
console.log($scope.allCharts);
}).then(function(err){
console.log(err);
});
}
loadData();
但是,不知何故,这不起作用!它给了我以下错误:
Error: dataLoad.loadFromJSON(...) is undefined
我做错了什么?
最佳答案
loadFromJSON
没有 return
语句,因此当您调用它时它会返回 undefined
。
您可能想返回 $http
返回的 promise 。
function loadFromJSON() {
return $http.get("data.json");
}
(我删除了您放在那里的 then
处理程序,因为它没有执行任何操作)。
关于javascript - 工厂方法似乎未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35479417/