我正在使用Handlebars模板引擎。
所以,我有型号:
所以,我有型号:
Backbone.Model.extend({
urlRoot: Config.urls.getClient,
defaults: {
contract:"",
contractDate:"",
companyTitle:"",
contacts:[],
tariff: new Tariff(),
tariffs: [],
remain:0,
licenses:0,
edo:""
},
initialize:function(){
this.fetch();
}
});
然后Marionette ItemView:
Marionette.ItemView.extend({
template : templates.client,
initialize: function () {
this.model.on('change', this.render, this);
},
onRender: function () {
console.log(this.model.toJSON());
}
});
然后我称之为:
new View({
model : new Model({id:id})
})
并且,它立即为我呈现一个视图,这很酷。
但是,在模型获取数据之后,它会触发“更改”,所以我在控制台序列化模型中看到两次,我首先看到空模型,然后填写一个。
但是,视图没有更新。
我该如何解决?
美国我明白,我可以在抓取完成回调时调用render方法。但是,当用户改变模型时,我还需要进一步的操作。
在视图中,您可以使用以下代码
modelEvents: {
'change': 'render';
}
代替
initialize: function () {
this.model.on('change', this.render, this);
},
onRender: function () {
console.log(this.model.toJSON());
}
相关文章
- backbone.js - 有没有办法用RequireJS动态更改Marionette ItemView模板?
- 在Marionette CollectionView中,如何将模型的索引(在集合中)传递给ItemView?
- angularjs - 一次绑定:更新模型并重新渲染视图
- ember.js - EmberJS,轮询,更新路线的模型,重新渲染组件
- backbone.js - Backbone.Marionette - 访问ItemView模板或CompositeView模板中的变量
- backbone.js - 如何阻止Backbone.Marionette渲染视图,如果它的模型尚未被抓取?
- javascript - Vue js在更改路线时重新渲染相同的组件
- templates - 如何在骨干中重新渲染部分模型?