gpt4 book ai didi

javascript - Angular - 服务返回值,但不在 app.config 中路由

转载 作者:行者123 更新时间:2023-12-01 03:55:21 24 4
gpt4 key购买 nike

我想调用一个服务来从数据库中检索用户(当前是模拟数据,但它将来自数据库),并在激活“个人资料”状态时将该用户的信息发送到 ProfileController。对服务进行了调用,但此后没有任何反应:函数的 then()catch() 部分中没有执行任何操作。关于我应该做什么有什么想法吗?

(function() {
"use strict";

angular.module("testing_app", [
"ui.router"
])
.config(function($urlRouterProvider, $locationProvider, $stateProvider, $qProvider) {
$locationProvider.html5Mode(true);

$stateProvider
.state("users", {
url: "/users",
templateUrl: "templates/users.html",
controller: "UsersController as uc"
})
.state("profile", {
url: "/user/:id",
templateUrl: "templates/profile.html",
controller: "ProfileController as pc",
resolve: {
resolvedUser: ["UsersService", "$q", "$stateParams", function(UsersService, $q, $stateParams){
console.log($stateParams.id);
return UsersService.findById($stateParams.id).then(function(user){
return user;
}).catch(function(error){
return $q.reject(error);
});
}]
}
});
});
})();

UsersService.js 当前正在使用模拟数据,但它最终将从数据库获取数据。

(function(){
"use strict";

angular.module("testing_app")
.factory("UsersService", function(){

var Users = {};

var userList = [
{ id: 1, name: "Richard Hendricks", email: "richard@piedpiper.com", phone: 4085550011, pokemon: { isPresent: true, name: "eevee"}, icon: { isPresent: false, name: null} },
{ id: 2, name: "Erlich Bachman", email: "erlich@aviato.com", phone: 4155552233, pokemon: { isPresent: true, name: "celebi"}, icon: { isPresent: false, name: null} },
{ id: 3, name: "Gavin Belson", email: "gavin@hooli.com", phone: 9165554455, pokemon: { isPresent: true, name: "snorlax"}, icon: { isPresent: false, name: null} }
];

Users.all = function(){
return userList;
};

Users.findById = function(id){
return userList.find(function(user){
return user.id == id;
});
};

return Users;
});
})();

最佳答案

由于您不在服务中使用 Promise,因此 UserService.findById() 中不会有任何 Promise.then() 或 Promise.catch()。

你应该在你的服务中使用 Promise。

Users.findById = function(id){
let deferred = this.$q.defer(); // you have to inject $q in your factory

deferred.resolve(userList.find(function(user) {
return user.id == id;
}));

return deferred.promise.
};

关于javascript - Angular - 服务返回值,但不在 app.config 中路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42743256/

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