gpt4 book ai didi

jquery - Backbone.js 模型属性返回未定义,但调试显示它在控制台中设置

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

我已经搞乱主干几天了,我猜想主干最终在模型中设置属性的顺序存在误解。我有以下代码:

在 model.js 文件内 -

SampleModel: Backbone.Model.extend({
urlRoot: 'a url',
defaults: {
attrA: 'value',
},
initialize: function() {
// init of model relationships
},
parse: function(response) {
this.set({attrA: response.attrAUpdateValue});
},
});

在 view.js 文件内 -

SampleView = Backbone.View.extend({
initialize: function() {
model = new SampleModel();
model.fetch();

console.log(model.get('attrA')); // Returns 'value' from default.
console.log(model.attributes); // Inspect the attributes for the model and see that attrA does not have updated value.
},
});

如何确保“attrA”在 View 中工作时具有值,而不是在更改时绑定(bind)模型以便与 attrA 一起使用?或者说,这就是 Backbone 领域的思考方式吗?一旦属性发生更改,就对模型执行某些操作?

提前感谢您的帮助。

更新:抱歉,我已经相应地更新了注释,之前我曾说过第一个控制台日志将包含未定义的值。它应该说明该值是默认值,而不是在解析操作期间应设置的预期更新值。

最佳答案

重点是,Backbone fetch 是异步的。为了确保 attrA 具有值,请使用 success 回调:

SampleView = Backbone.View.extend({
initialize: function() {
model = new SampleModel();
model.fetch({success: function(){
console.log(model.get('attrA')); // Returns new value
});
},
});

关于jquery - Backbone.js 模型属性返回未定义,但调试显示它在控制台中设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7338404/

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