2011-03-21 18 views
4

我有看法及相關模型,看起來像擺弄:我現在面臨兩個問題Backbone.js的:瞭解瀏覽器事件處理和視圖中刪除

App.Views.Addresses   = App.Views.Addresses || {}; 
App.Views.Addresses.Address = Backbone.View.extend({ 

    events: { 
    "click button#foo"    : "clear" 
    }, 

    initialize: function(model){ 
       this.address = model.model; 
       this.address.view = this; 
       _.extend(this, Backbone.Events); 
       this.render(); 
       }, 

    render:  function(){ 
       ... rendering stuff 
       }, 

    clear:  function(){ 
       this.address.clear(); 
       } 
}); 

var Address = Backbone.Model.extend({ 

    url: function() { 
      ... url stuff 
     }, 

    clear: function(){ 
      this.destroy(); 
      this.view.remove(); 
     } 
}); 

這裏。第一個:

我的源代碼中有一個id =「foo」的按鈕,並希望視圖捕捉這個按鈕的'click'事件並激發'clear'事件。問題:這不起作用。

無論如何,在我的模型上手動調用'清除'乾淨地刪除服務器上的數據,但不會刪除視圖本身。那是第二個問題。希望更有經驗的人能夠啓發我。

THX提前 菲利克斯

回答

11

第一個問題:

  • 你的按鈕必須由視圖渲染的元素中。
    • 骨幹範圍事件內部元素僅
  • 您必須this.el元素中呈現你的看法
    • 骨幹使用元素代表團

問題二:

  • 使用事件破壞您的視圖
    • 您不應將視圖存儲在模型中。這在MVC中是「不」的。您的模型在刪除時已經發出「刪除」事件。你的觀點應該聽取並且相應地表現出來。
  • 必須從DOM刪除您的視圖元素自己
    • 這不是由主幹處理。

其他一般性評論:

  • 意見已經被延長Backbone.Events
  • 使用this.model代替this.address
+0

朱利安,非常感謝這個一。經過一些更改後開箱即用,並讓我更好地理解視圖。 – GeorgieF 2011-03-21 20:14:35

相關問題