gpt4 book ai didi

javascript - AngularJS Controller promise then 不是一个函数

转载 作者:行者123 更新时间:2023-12-02 15:03:40 26 4
gpt4 key购买 nike

我在 Controller 中做出 promise 时遇到了麻烦。

Plunker Editor Sample

这是包含模块、 Controller 和工厂的代码当我调用Factory并等待响应时,一切正常。

我在控制台中收到错误“Then 不是函数”但我不知道代码有什么问题

angular
.module('sampleApp', [])
.controller('SampleController', SampleController)
.factory('myFactory', myFactory);

////////// FACTORY
function myFactory () {

var task = {
getData : getData,
counter: 0
};

return task;


// Implementation details //
// ---------------------- //

function getData () {
task.counter ++;
var response = "FakeData";
return response;
}
}

////////// CONTROLLER
function SampleController (myFactory, $log) {
$log.info("Sample controller initialized");

var vm = this;
vm.title = "SampleView";
vm.callFactory = callFactory;
vm.factoryResponse;

callFactory();

// Implementation details //
// ---------------------- //

function callFactory () {

myFactory.getData()
.then(function (data) {
vm.factoryResponse = data;
return vm.factoryResponse;

})
.catch(function () {
$log.error("Ups! We cannot complete the request :(");
});
}
}

最佳答案

因为你的工厂方法getData返回string。如果你想使用then,那么你的方法需要返回$promise。像这样plunker :

////////// FACTORY
function myFactory ($q) {

var task = {
getData : getData,
counter: 0
};
var defer = $q.defer();

return task;


// Implementation details //
// ---------------------- //
function getData (randomParameter) {
task.counter ++;
var secondString = ", sample factory value"
var response = randomParameter + secondString;
defer.resolve(response);
return defer.$promise;
}}

更多关于angular $q

关于javascript - AngularJS Controller promise then 不是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35267705/

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