我有两个模块itemView.js和ListView.js。
当我获取数据时,一切都正常。
当我改变相应的模型时,问题是关于item view (1)。
( a) ListView.js (2)显示模型的closed值等于false (3)的所有对象
( b) (1)中的动作closeTask改变了模型的值
从closed: false到closed: true
( c)当b)发生任何变化时,
但是,如果我重新加载页面,就会得到正确的结果(没有显示closed值等于true的模型)。
我该如何解决这个问题?
(1)
// itemView.js
var itemView = Marionette.ItemView.extend({
initialize: function () {
this.model.on('change', this.render, this);
},
events: {
'click #close': 'closeTask'
},
template: itemTemplate,
tagName: 'li',
closeTask: function () {
if (!this.model.get('closed')) {
this.model.save({
closed: true
});
}
}
});(2)
// ListView.js
var ListView = Marionette.CompositeView.extend({
template: listTemplate,
itemView: itemView
});(3)
// Collection
myCollection.attributes = [
{
id: 1,
name: 'bar'
closed: false
},
{
id: 2,
name: 'bar2'
closed: false
},
….
];P.S.:
当我获取集合时,服务器只提供具有等于false的封闭属性的模型。
app.addInitializer(function () {
myCollection = new MyCollection();
myCollection.fetch();
});发布于 2012-07-03 14:43:28
我没有和Marionette一起工作,但是我一直在和骨干一起工作,我的想法是Marionette没有刷新模板或者类似的东西。
如果你尝试这个会发生什么?
// itemView.js
var itemView = Marionette.ItemView.extend({
initialize: function () {
this.model.on('change', this.render, this);
},
onRender : function(){
//verify your model:
console.log( this.model.toJSON() );
if (this.model.get('closed')) {
this.$el.fadeOut();//bye bye item
}
},
events: {
'click #close': 'closeTask'
},
template: itemTemplate,
tagName: 'li',
closeTask: function () {
if (!this.model.get('closed')) {
this.model.save({
closed: true
});
}
}
});https://stackoverflow.com/questions/11312846
复制相似问题