将 Backbone 模型转换为 JSON 设置默认值
Converting Backbone model to JSON set default values
这是我的 Backbone 模型代码,我在其中设置了默认值。
App.Models.Stock = Backbone.Model.extend({
defaults: {
name: '',
quantity: 0,
booked: 0,
minimum: 0,
active: 1
},
urlRoot: '/stock/'
});
这是我的 Backbone 查看代码,我在其中等待按钮点击。
templateItem: _.template($('#stockItem').html()),
events: {
'click #openStock': 'showStock'
},
showStock: function(e) {
var stock = new App.Models.Stock({
id: $(e.currentTarget).data('id')
});
stock.fetch();
$('#sidebar').empty().append(
this.templateItem(stock.toJSON())
);
}
问题是当我们从服务器获取模型时 returns 正确的结果,但是当我尝试将其转换为 JSON 时,Backbone 为模型设置了默认值!为什么会这样?我的代码有什么问题?
您需要将您的 stock.toJSON()
放入 fetch
的回调中。 Fetch
是异步的,因此在您调用 stock.toJSON()
之前,您的服务器的值不会加载。此时,默认值仍设置为 stock
,而不是您从服务器加载的值。
尝试...
stock.fetch({
success: function() {
$('#sidebar').empty().append(
this.templateItem(stock.toJSON())
);
}
});
这是我的 Backbone 模型代码,我在其中设置了默认值。
App.Models.Stock = Backbone.Model.extend({
defaults: {
name: '',
quantity: 0,
booked: 0,
minimum: 0,
active: 1
},
urlRoot: '/stock/'
});
这是我的 Backbone 查看代码,我在其中等待按钮点击。
templateItem: _.template($('#stockItem').html()),
events: {
'click #openStock': 'showStock'
},
showStock: function(e) {
var stock = new App.Models.Stock({
id: $(e.currentTarget).data('id')
});
stock.fetch();
$('#sidebar').empty().append(
this.templateItem(stock.toJSON())
);
}
问题是当我们从服务器获取模型时 returns 正确的结果,但是当我尝试将其转换为 JSON 时,Backbone 为模型设置了默认值!为什么会这样?我的代码有什么问题?
您需要将您的 stock.toJSON()
放入 fetch
的回调中。 Fetch
是异步的,因此在您调用 stock.toJSON()
之前,您的服务器的值不会加载。此时,默认值仍设置为 stock
,而不是您从服务器加载的值。
尝试...
stock.fetch({
success: function() {
$('#sidebar').empty().append(
this.templateItem(stock.toJSON())
);
}
});