2012-06-09 49 views
0

我與骨幹關係建立了模型關係設置,Item屬於Column向列中添加項目效果不錯,但如何引用項目的現有視圖,以便將其從舊列中移除?(因此,項目正在複製跨列。)響應骨幹關係中的類別模型變更

請參見本文的jsfiddle - http://jsfiddle.net/geVPp/1(我猜的代碼需要在ColumnViewremoveItem事件處理程序來實現,但我可能是錯的)。

(實例例示是在腳本的底部,因爲我沒有UI控件呢。)

下面是從小提琴的ColumnView:

var ColumnView = Backbone.View.extend({ 
className: 'column', 
tagName: 'div', 
template: Handlebars.compile($('#column-template').html()), 
initialize: function() { 
    _.bindAll(this, 'render', 'renderItem', 'removeItem'); 
    this.model.bind('change', this.render); 
    this.model.bind('reset', this.render); 
    this.model.bind('add:items', this.renderItem); 
    this.model.bind('remove:items', this.removeItem); 
}, 
render: function() { 
    return $(this.el).html(this.template(this.model.toJSON())); 
}, 
renderItem: function(item) { 
    var itemView = new ItemView({model: item}); 
    this.$('.items').append($(itemView.render())); 
}, 
removeItem: function(item) { 
    // @todo -- How do I reference the item model's view, in order to remove the DOM element? 
} 
}); 

回答

0

不幸的是主幹沒有內置在某方面;您必須手動跟蹤您的子視圖(以及它們映射的模型)。

Backbone.Marionette有一個CollectionView類,可以爲您自動執行此操作。或者你可以推出自己的類似UpdatingCollectionView

如果您想快速修復,可以將視圖的引用保留爲模型對象的變量,但這很糟糕,因爲這會阻止您顯示同一模型的多個視圖。