簡體   English   中英

如何防止Backbones保存方法嘗試更新每個模型?

[英]How can I prevent Backbones save method from trying to update every model?

我正在創建具有骨干的原始Web應用程序。 我正在編寫更新資源(PUT)的功能。 我正在嘗試通過從服務器獲取模型屬性(請參見SubscriberView)並成功獲取資源以實例化SubscriberEditView的方式來實現這一點,從而通過新獲取的模型。 到目前為止,這可以按預期進行; SubscriberEditView呈現一個HTML表單,其中填充了模型實例屬性。 當我在表單中輸入新的登錄值時,我可以觸發更新功能,該功能成功向服務器資源發出PUT請求並按預期更新模型實例。 但是,問題在於,當我隨后對另一個模型實例重復此過程時,將針對當前模型和先前實例化的模型發出PUT請求。 原因是因為我現在有兩個SubscriberEditView實例? 還是我錯過/誤解的其他東西。

請參見下面描述的代碼。

 // The view for a single subscriber var SubscriberView = Backbone.View.extend({ tagName: 'tr', template: _.template($('#subscribers-tmpl').html()), initialize: function() { this.listenTo(this.model, 'destroy', this.remove); }, render: function() { var html = this.template(this.model.toJSON()); this.$el.html(html); return this; }, events: { 'click .remove': 'onRemove', 'click .edit-subscriber': 'editSubscriber', }, editSubscriber: function() { var getSubscriberModel = this.model.set('id', this.model.attributes.id, {silent:true}) getSubscriberModel.fetch({ success: function (model, response) { $('#addSubscriber').fadeOut(); new SubscriberEditView({model:model}); }, error: function (response) { console.log('There was an error'); } }); }, onRemove: function() { this.model.destroy(); } }); // The edit view var SubscriberEditView = Backbone.View.extend({ tagName: 'div', el: '#updateSubscriber', template: _.template($('#subscriberEdit-tmpl').html()), initialize: function() { this.model.on('sync', this.render, this); }, events: { 'click #close': 'cancel', 'click .save-subscriber': 'update' }, update: function() { var $login = this.$('#login'); this.model.save({ login: $login.val(), }, { dataType: 'text', success: function (model, response, options) { console.log('success'); }, error: function (model, response, options) { console.log('error'); } }); }, cancel: function() { $('#addSubscriber').fadeIn(); $('#editInner').fadeOut(); }, render: function() { var html = this.template(this.model.toJSON()); this.$el.html(html); }, }); 

如果有人可以提供幫助,將不勝感激。 干杯

問題是el: '#updateSubscriber', 您所有的視圖實例都指向事件委托到的相同元素。 因此,單擊任何.save-subscriber都會觸發所有視圖實例的更新。 您不應該為要具有多個實例的視圖指定el

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM