gpt4 book ai didi

javascript - ionic Controller 和服务 : "TypeError:... is not a function"

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:29:34 25 4
gpt4 key购买 nike

我正在开发 Ionic 的移动应用程序并被错误困住了

TypeError: t.getCases(...).then is not a function

以下是我的 Controller 和相关服务:

服务

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;
}
}

})

Controller

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”(异步调用),你必须从服务返回一个 promise ,之后能够在你的 Controller 中获取:

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 是一个可选的错误消息/对象)。

这是另一个很好的链接,它帮助我了解了使用 Angular promise 的异步编程的概念: $q.defer

关于javascript - ionic Controller 和服务 : "TypeError:... is not a function",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34254257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com