我是Backbone的新手。 我想顯示股票列表,用戶可以從列表中打開任何股票並更改股票價值。之後,整個列表應刷新以顯示更改的值。骨幹:多次查看事件觸發器
因此,我發現不僅要創建收集,還要創建收集和庫存模型列表。
爲此,我創建了主表和庫存模型視圖的庫存視圖,用於將行添加到表中,其中每行是單個模型。
所以這是一個集合視圖:
App.Views.StockTable = Backbone.View.extend({ ... initialize: function() { this.render(); }, render: function() { this.$el.html(this.template(this.collection)); this.addAll(); return this; }, addOne: function(stock) { var row = new App.Views.StockRow({ model: stock, suppliers: this.suppliers }); return this; }, addAll: function() { var suppliers = new App.Collections.Suppliers(); var that = this; suppliers.fetch({ success: function() { _.each(that.collection.toJSON(), that.addOne, that); } }); return this; } });
這是我的股票行觀點:
App.Views.StockRow = Backbone.View.extend({ el: 'tbody', templateRow: _.template($('#stockRow').html()), templatePreview: _.template($('#stockPreview').html()), events: { 'click #open': 'open' ... }, initialize: function() { this.render(); }, render: function() { this.$el.append(this.templateRow(this.model)) .append(this.templatePreview({ stock: this.model, suppliers: this.suppliers })); return this; }, open: function(e) { var element = $(e.currentTarget); element.attr('id', 'hide'); $('#stock' + element.data('id')).slideToggle('fast'); } ... });
我寫的只是一段代碼。問題是,當我點擊'#open'時,該事件觸發很多次(正確的集合中的數量元素)。所以當我抓到e.currentTarget時,有很多類似的對象。 我做錯了什麼?