我现在一直在乱用骨干几天而且我想起了一个误解,因为骨干终于在模型中设置了一个属性。我有以下代码:
在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,我如何确保在更改模型之外的视图中工作时'attrA'是否有值?或者,这是在骨干领域中考虑它的方式吗?属性发生变化后,对模型执行某些操作?
提前感谢您的帮助。
更新:我的错误我已经相应地更新了评论,之前我说过第一个控制台日志包含一个未定义的值。它应该声明该值是默认值的值,而不是应该在解析操作期间设置的预期更新值。
答案 0 :(得分:8)
重点是,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
});
},
});