我想在集合提取模型之後但在模型渲染之前執行操作,清除父元素。集合模型的骨架預渲染
我偶然發現before and after render methods但它們是模型特定的,這將導致我的父元素在每個模型渲染之前清除。
我當然可以執行預取動作,但我希望在提取完成之前和渲染模型之前發生該操作。
我嘗試使用重置和更改事件監聽集合,但都導致不需要的最終結果。 重置事件接縫朝那個方向走,但傳遞的參數是整個集合而不是集合中的單個模型,因此使用add事件回調是不可能的,因爲參數類型不同(集合而不是所需的模型)
任何想法如何在獲取集合提取時調用回調已成功但模型尚未呈現?
模型包含返回的屬性,而集合包含用於獲取和解析方法以返回參數包裝對象的url。
下面是我用來呈現集合視圖的代碼,它基本上呈現集合中的每個模型的視圖。
Collection View
---------------
var FoosView = Backbone.View.extend({
el: '#plans',
events: {
//'click tr': 'rowClick'
},
initialize: function() {
this.listenTo(this.collection, 'add', this.renderNew);
_.bindAll(this, "render");
this.render();
},
renderNew: function(FooModel) {
var item = new FooView({model: FooModel});
this.$el.prepend(item.render().$el);
}
...
});
The model view
--------
var FooView = Backbone.View.extend({
tagName: 'li',
initialize: function(options) {
this.options = options || {};
this.tpl = _.template(fooTpl);
},
render: function() {
var data = this.model.toJSON();
this.$el.html(this.tpl(data));
return this;
}
});
在此先感謝。
嗨夏爾哈,像弗朗索瓦我真的不知道我理解你的問題。我想你是要求在集合重新加載/重置時清空父列表?您不能使用renderNew()方法,因爲來自'reset'事件的參數是模型列表而不是單個模型,是否正確?所以你想使用'this.listenTo(this.collection,'reset',this.someNewMethod);',其中someNewMethod首先清除列表並渲染元素。讓我知道這聽起來是否正確。 – mtl
我試過重置,但我有問題渲染傳遞的參數,因爲它是一個集合,而不是一個單一的模塊(我嘗試在重置回調renderNew方法內使用,我想這是我的錯誤... –
是啊,它看起來像重置事件是你想要的,我會爲你解釋如何去解決它:)。 – mtl