Ionic Controller and Service: "TypeError:... is not a function"
Ionic Controller and Service: "TypeError:... is not a function"
我正在开发 Ionic 的移动应用程序并被错误卡住了
TypeError: t.getCases(...).then is not a function
以下是我关注的控制器和服务:
服务
starter.services.factory('appData', function() {
return {
getCases: function() {
var cases =[
{case_id: 1, description: 'headache'},
{case_id: 2, description: 'fever'},
{case_id: 3, description: 'stomachache'}
];
return cases;
}
}
})
控制器
starter.controllers.controller('mainViewCtrl', function($scope, appData) {
appData.getCases().then(function(data){
$scope.cases = data.cases;
});
console.log("mainViewCtrl completed");
})
请注意,在构建包文件之前,我 运行 合并 gulp 脚本和 "uglify" 所有 JS 文件。
如有任何帮助,我们将不胜感激。
正如T.J. Crowder所说,为了使用"then"(异步调用),你必须return服务的承诺,之后能够在你的控制器中获取:
starter.services.factory('appData', function($q) {
return {
getCases: function() {
var deferred = $q.defer();
var cases =[
{case_id: 1, description: 'headache'},
{case_id: 2, description: 'fever'},
{case_id: 3, description: 'stomachache'}
];
//attach data to deferred object
deferred.resolve(cases);
//return promise to be catched with "then"
return deferred.promise;
}
}
})
如果您可能想要 return 一个错误作为回调,您可以通过调用 deferred.reject(error) 来拒绝承诺(而错误是一个可选的错误 message/object)。
这是另一个好东西 link,它帮助我在 angular 中获得了带有承诺的异步编程的概念:
$q.defer
我正在开发 Ionic 的移动应用程序并被错误卡住了
TypeError: t.getCases(...).then is not a function
以下是我关注的控制器和服务:
服务
starter.services.factory('appData', function() {
return {
getCases: function() {
var cases =[
{case_id: 1, description: 'headache'},
{case_id: 2, description: 'fever'},
{case_id: 3, description: 'stomachache'}
];
return cases;
}
}
})
控制器
starter.controllers.controller('mainViewCtrl', function($scope, appData) {
appData.getCases().then(function(data){
$scope.cases = data.cases;
});
console.log("mainViewCtrl completed");
})
请注意,在构建包文件之前,我 运行 合并 gulp 脚本和 "uglify" 所有 JS 文件。
如有任何帮助,我们将不胜感激。
正如T.J. Crowder所说,为了使用"then"(异步调用),你必须return服务的承诺,之后能够在你的控制器中获取:
starter.services.factory('appData', function($q) {
return {
getCases: function() {
var deferred = $q.defer();
var cases =[
{case_id: 1, description: 'headache'},
{case_id: 2, description: 'fever'},
{case_id: 3, description: 'stomachache'}
];
//attach data to deferred object
deferred.resolve(cases);
//return promise to be catched with "then"
return deferred.promise;
}
}
})
如果您可能想要 return 一个错误作为回调,您可以通过调用 deferred.reject(error) 来拒绝承诺(而错误是一个可选的错误 message/object)。
这是另一个好东西 link,它帮助我在 angular 中获得了带有承诺的异步编程的概念: $q.defer