2012-07-03 36 views
0

我有兩個模塊itemView.jsListView.js
當我獲取數據時,一切正常。Marionette.CompositeView和Marionette.ItemView之間的事件

問題是關於item view(1)當我改變相應的模型。

a)所述ListView.js(2)顯示,其型號有closed值等於false(3)

b)在動作closeTask(1)改變該模型的值
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:

當我取收集,服務器給我的只是具有封閉屬性爲假的車型。

app.addInitializer(function() { 
    myCollection = new MyCollection(); 
    myCollection.fetch(); 
}); 
+0

你對此有何看法?該產品何時關閉,你期望看到什麼變化? –

回答

1

我沒跟木偶工作,但我一直在工作的骨幹,我的想法是,木偶不刷新模板或類似的東西。

如果您嘗試此操作,會發生什麼情況?

// 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 
      }); 
     } 
    } 

}); 
+0

我更新了我的代碼以使用onRender,因爲Marionnet有一個方法。 https://github.com/derickbailey/backbone.marionette/blob/master/docs/marionette.itemview.md –

+0

+1是的,你的代碼有效。無論如何,木偶應該自動重新渲染這個變化,或者我錯過了一些東西。 –

+0

也許你錯過了一些東西,請粘貼我請代碼,你決定顯示或不是項目取決於封閉的價值。 –

相關問題