离子控制器和服务:;类型错误:..不是函数”;
Ionic Controller and Service: "TypeError:... is not a function"
我正在开发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;
}
}
})
控制器
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"(异步调用),您必须从服务返回一个承诺,然后才能在控制器中获取:
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;
}
}
})
如果您可能想返回一个错误作为回调,您可以通过调用deferred.reject(error)来拒绝promise(而error是一个可选的错误消息/对象)。
这里有另一个很好的链接,它帮助我获得了异步编程的概念,并以角度进行了承诺:$q.推迟
相关文章:
- Node.js v6.2.0类扩展不是函数错误
- Javascript搜索函数错误
- Chrome Javascript日期构造函数错误
- 浏览器中出现javascript初始大写函数错误
- Createjs冲突问题localToLocal不是函数错误
- Java脚本函数错误
- 更新带有Javascript函数错误的变量
- 如何将对象插入对象列表的开头,当它有 unshift 不是函数错误
- 在将 Pickadate 与 Meteor 一起使用时,未定义不是函数错误
- 运行咕噜咕噜咕噜抛出 _.object 不是函数错误
- 了解函数(错误、数据)回调
- javascript中的typeof()函数错误
- 我一直在获取angularjs服务不是函数错误(LoginService.login不是函数)
- HTML5拖拽&drop正在抛出undefined不是函数错误
- Google Maps API a.lat不是函数错误
- getItemAtIndex不是函数错误
- Javascript停止函数错误
- 对话框函数错误无效函数
- Javascript 自定义函数错误
- 因果报应单元测试'未定义'不是函数错误