gpt4 book ai didi

javascript - 当对服务器的ajax请求失败时如何使用默认属性

转载 作者:行者123 更新时间:2023-11-29 19:30:54 25 4
gpt4 key购买 nike

我下面有一个合集

var Collection = Backbone.Collection.extend({
model: Model,
url: 'messages',
defaults :{
subject: 'this is subject',
message: 'This is message'
}
});

现在我想要的是,当对 message 的 ajax 请求失败时,我希望我的应用程序使用默认数据,但我当前的应用程序不使用它。

下面是我使用它的方式。

var collection = new Collection();

collection.fetch().then(function () {
new SomeView({ collection: collection });
}, function (status, error) {
new SomeView({ collection: collection });
});

我在上面的代码中所做的是,如果获取成功或失败,我仍然调用相同的 View 并传递相同的集合。现在,当它失败时,集合应该有默认内容。但不幸的是它没有它们。

这样做的主要目的是我希望我的应用程序能够工作,即使没有可用的服务器也应该能够使用集合中默认属性中存在的静态数据。

是否可能,如果可以,我该如何让它工作?

最佳答案

默认值是在模型而不是集合中设置的。如果获取失败,您可以做的是使用默认值将新模型添加到集合中:

var Model = Backbone.Model.extend({
defaults :{
subject: 'this is subject',
message: 'This is message'
}
});

var Collection = Backbone.Collection.extend({
model: Model,
url: 'FakeUrl/messages'
});

var collection = new Collection();

collection.fetch().then(function () {
new SomeView({ collection: collection });
}, function (status, error) {
//adds new model with default values, same as collection.add(new Model());
collection.add({});
console.log(collection.toJSON());

new SomeView({ collection: collection });
});

另一种选择是最初创建包含具有默认值的单个模型的集合。然后在从服务器获取数据时传递 {reset:true} 。如果获取成功,默认模型将被删除,但如果失败,集合仍将包含它:

var collection2 = new Collection(new Model());
collection2.fetch({reset: true}).then(function () {
new SomeView({ collection: collection });
}, function (status, error) {
console.log(collection2.toJSON());
new SomeView({ collection: collection });
});

您可以在 this fiddle 中尝试这两个选项

关于javascript - 当对服务器的ajax请求失败时如何使用默认属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27529773/

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