gpt4 book ai didi

ember.js - 强制 Ember 等待来自 Ajax 请求的值

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

我有一个 Ember 应用程序,它通常会向服务器发出 ajax 请求以获取其数据。我面临的问题是每个请求都需要在 URL 后附加一个签名。这个签名需要经常计算,因为它的有效期可能只有 10 秒。系统要求我从服务器请求此签名,可能使用 ajax 请求。所以,我的问题是 Ember 永远不能使用从 ajax 请求返回的签名,因为它不是按预期设计的。

有问题的代码在这里:http://jsfiddle.net/veDjq/

在该代码中,signatureApp.Post总是 undefined虽然我可以看到如果我 console.log,对签名的请求会返回一个正确的值。 responseApp.Signature .

我是 Ember 的新手,所以我很可能会走错这条路。最后,每次 Ember 对象必须从服务器请求数据时,我都需要能够请求新签名。我尝试使用 jQuery 的 $.ajaxSend更改 URL,但它不适用于 GET 请求。

最佳答案

您的内部 success处理程序,this不是你认为的那样。看起来你打算this成为 App.Signature类。为了做到这一点,您可以设置 context签名 ajax 调用选项 this .

我还建议研究 promise 。他们将帮助您清理此代码。例如(未经测试):

App.Signature.reopenClass({
retrieveSignature: function(){
return $.ajax({
url: '/auth/',
});
}
});

App.Post.reopenClass({
postedPosts: [],
find: function(){
var postClass = this;
var signaturePromise = App.Signature.retrieveSignature();
signaturePromise.done(function(signature){
var postsRetrieval = $.ajax({
url: 'http://someserver.com/1/posts/list.json?' + signature,
dataType: 'json'
});
postsRetrieval.done(function(response){
response.data.forEach(function(post){
postClass.postedPosts.addObject(App.Post.create(post))
});
});
});
return this.postedPosts;
}
});

关于ember.js - 强制 Ember 等待来自 Ajax 请求的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12732692/

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