gpt4 book ai didi

javascript - 无法从 $resource 中提取数据(使用 REST Web 服务)

转载 作者:行者123 更新时间:2023-12-02 14:14:41 25 4
gpt4 key购买 nike

我正在尝试使用 REST Web 服务,并使用包含相当“复杂”架构的 JSON 字符串进行响应。

我创建了一个模型,其中包含网络服务发送的每个字段。

以下是应该有问题的相关代码:

 public getUser(user_id: number): PlanDeCharge.Modeles.User {
var toto;
this.UserRest.get({ user_id: user_id }, function(){}, function(err){
this.$window.location.href = "http://localhost:8080/myapp_webapp/login.do";
}).$promise.then(function(data){
toto = data;
});

return toto;
}

-

 this.userConnecte = this.gestionUserService.getUser(759);

-

 export function userRest($resource: ng.resource.IResourceService, $cookies: ng.cookies.ICookiesService): PlanDeCharge.Modeles.IUserResource {
this.key = $cookies.get("encodedKey");

var urlService: string = "http://localhost:8080/teambox_webapp/resource-rest/V1_1/users/:user_id";
return <PlanDeCharge.Modeles.IUserResource> $resource(urlService, {user_id: "@user_id"}, {
get:{
headers:{"key" : this.key}
}
});
}

app.factory("UserRest", ["$resource", "$cookies", userRest]);

我做了很多修改,试图修复调用但没有成功...该请求实际上得到了包含 JSON 字符串的响应,但我无法将其放入要使用的对象中(例如 user['id '] = 2)

提前致谢

我删除了上一篇文章并制作了新的一篇文章,第一篇文章不够清晰,人们感到困惑

最佳答案

当使用 Promise 时,你应该让 Angular 来处理解析。如果您实际上使用的是 AngularJS 1 而不是问题标记的 ng2,我对吗?语法无论如何都是 ng1。

关于 getUser 方法的一些注释。返回由 $resource 创建的引用,而不是您自己创建一个。此外,在回调中使用粗箭头语法将 this 绑定(bind)到正确的上下文。 See this article for more on this .

要删除更多代码,请使用 TypeScripts 对象初始化并仅使用 { user_id } 初始化用户 id 对象。这将创建一个 JavaScript 对象,该对象的属性 user_id 的值为 user_id

public getUser(user_id: number): SomeModel {
return this.UserRest
.get({ user_id }, () => { }, () => {
this.$window.location.href = "http://localhost:8080/myapp_webapp/login.do";
});
}

在您的组件或 Controller 访问

this.userConnecte = this.gestionUserService.getUser(759);

最后是工厂/服务。利用 $resource 是通用的这一事实,并在未更改时将变量设置为常量。

export function userRest(
$resource: ng.resource.IResourceService,
$cookies: ng.cookies.ICookiesService
): ng.resource.IResourceClass<PlanDeCharge.Modeles.IUserResource> {
this.key = $cookies.get("encodedKey");

const urlService = "http://localhost:8080/teambox_webapp/resource-rest/V1_1/users/:user_id";
return $resource<PlanDeCharge.Modeles.IUserResource>(urlService, { user_id: "@user_id" }, {
get: {
headers: { "key": this.key }
}
});
}

这应该可以解决您的问题并使代码更具可读性。 :)

关于javascript - 无法从 $resource 中提取数据(使用 REST Web 服务),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39147400/

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