2014-01-13 54 views
1

我正在練習我的第一個骨幹應用程序,CRUD風格。 我有modelListView,編輯按鈕鏈接到modelView。 modelView有一個刪除按鈕來銷燬模型。如何在Backbone.js視圖之間傳遞事件?

現在我想實現的是向用戶顯示成功消息,當他返回到modelListView並且模型已被成功刪除時。

我已經引發了model:deleted事件中successmodelListView的聽衆:

 initialize: function(){ 
      this.on('wine:deleted', function(){ 
       alert('wine:deleted') 
      }) 
     }, 

不能 「聽到」 這一點。這種視角間溝通的最佳做法是什麼?

+0

你檢查了嗎? http://addyosmani.github.io/backbone-fundamentals/#on-off-and-trigger – gerl

回答

1

有幾個我用過的方法。一個是讓這兩個視圖都持有對同一模型的引用 - 然後您可以從任何視圖需要了解的模型中簡單地偵聽來自該模型的事件。其次是使用event aggregator,本質上是一個事件對象,它提供了一個路徑事件的位置,因此您可以減少視圖偵聽事件所需的對象數量。我使用的通常是應用程序的複雜性以及我需要從中路由事件的模型/集合對象的數量。

+0

活動巴士的想法吸引了我更多。我認爲有一個內置的方法或技巧來實現我的目標。謝謝。 – user776686

0

我認爲你的基本問題是這一行:

this.on('wine:deleted', function(){ 

你說該行代碼從modelListView來了,但事情是,Views沒有一個on方法(只Model S和Collection小號做)。我認爲你要找的是:

this.model.on('wine:deleted', function(){ 

但即使這樣做不太正確,因爲命名空間似乎很有趣。如果我假設你正在做的:

this.trigger('deleted'); 
在你的酒模型

,然後趕上該事件,你會只需要:

this.model.on('deleted', function(){ 

然而,即使是看起來有點大材小用,因爲骨幹已經當Model被破壞,你可以用一個事件,不需要任何額外的trigger聲明:

this.model.on('destroy' function(){ 

希望有所幫助。

+0

謝謝你指出這一點。我會因爲不必要的事件而混亂我的空間。 – user776686