Won*_*mmy 5 javascript cordova ionic
我正在开发 Ionic 的移动应用程序并被错误卡住
TypeError: t.getCases(...).then 不是函数
以下是我的控制器和服务:
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;
}
}
})
Run Code Online (Sandbox Code Playgroud)
starter.controllers.controller('mainViewCtrl', function($scope, appData) {
appData.getCases().then(function(data){
$scope.cases = data.cases;
});
console.log("mainViewCtrl completed");
})
Run Code Online (Sandbox Code Playgroud)
请注意,在构建包文件之前,我运行 gulp 脚本来合并和“丑化”所有 JS 文件。
任何帮助将非常感激。
正如TJ Crowder所说,为了使用“then”(异步调用),您必须从服务返回一个承诺,之后能够在控制器中获取:
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;
}
}
})
Run Code Online (Sandbox Code Playgroud)
如果您可能想返回错误作为回调,您可以通过调用 deferred.reject(error) 来拒绝承诺(而 error 是可选的错误消息/对象)。
这是另一个很好的链接,它帮助我了解了角度承诺的异步编程的概念: $q.defer
| 归档时间: |
|
| 查看次数: |
2344 次 |
| 最近记录: |