2012-06-28 69 views
2

我是Backbone和Marionette的新手,並且很難讓我的觀點進行交流。添加到彈出模式與骨幹木偶的集合

我有一個合成視圖,顯示項目列表。要將新項目添加到列表中,我有一個彈出窗口模式,該窗口在與複合視圖分開的新項目視圖中打開。

我不確定這是做到這一點的最佳方式,但是在模式中,我創建了一個包含所有項目的集合的新實例,並將新項目添加到該集合中。此新項目顯示在原始複合視圖中,但僅在刷新頁面後才顯示。

我似乎無法弄清楚如何獲取組合視圖以偵聽添加事件並在添加新模型後呈現新模型。

我在這裏在正確的軌道上?如果不是,我應該怎麼做才能從模式中添加到集合中?

回答

1

我想我弄明白了。我沒有在模態視圖中創建新的集合,而是在創建模態視圖時從複合視圖中將集合作爲參數傳入。現在,當我在模式中添加新模型時,'add'事件會自動觸發集合的兩個版本,並且視圖會自動呈現新模型。無需像我想的那樣綁定任何額外的事件。

0

您的解決方案將工作,但意味着你的看法是相當緊密耦合。您可能要考慮使用事件,而不是(見How do I send a model that was clicked on within a ItemView to another ItemView that is on the same page?

如何使你的功能將使用這些事件:

  1. 內模式,您輸入的數據爲模型來創建
  2. 當您按下「保存」按鈕,
    1. 您驗證和保存模型var myNewModel = ...
    2. 你觸發一個事件:MyApp.MySubApp.trigger("item:add", myNewModel)
  3. 在列表視圖的控制器中,您將聽該事件,並將新模型添加到集合中。

在控制器的處理程序代碼看起來是這樣的:

MyApp.MySubApp.on("item:add", function(model){ 
    this.myCollection.add(model); 
}); 

如果您想了解更多關於使用事件,檢查出2個木偶教程我寫道:

兩者都使用事件在應用程序內傳遞信息。

此外,基本事件也在這裏解釋:http://samples.leanpub.com/marionette-gentle-introduction-sample.pdf