我对Backbone和Marionette很陌生,并且很难让我的观点得到沟通。
我有一个显示项目列表的复合视图。要在列表中添加一个新项目,我有一个弹出模式,它在一个与复合视图分开的新项目视图中打开。
我不确定这是执行此操作的最佳方式,但在模式中,我使用所有项目创建了集合的新实例,并将新项目添加到该集合中。此新项目显示在原始复合视图中,但仅在刷新页面后显示。
我似乎无法弄清楚如何让复合视图侦听add事件并在添加新模型后渲染它。
我在这里走在正确的轨道上吗?如果没有,我应该怎么做才能从模态中添加到集合中?
答案 0 :(得分:1)
我想我弄明白了。我没有在模态视图中创建新集合,而是在创建模态视图时将复合视图中的集合作为参数传递。现在,当我在模态中添加新模型时,会在两个版本的集合上自动触发“add”事件,并且视图会自动呈现新模型。不需要像我想的那样绑定任何额外的事件。
答案 1 :(得分:0)
您的解决方案可行,但意味着您的观点非常紧密。您可能希望改为使用事件(请参阅How do I send a model that was clicked on within a ItemView to another ItemView that is on the same page?)
您的功能如何与事件一起使用:
var myNewModel = ...
MyApp.MySubApp.trigger("item:add", myNewModel)
控制器中的处理程序代码如下所示:
MyApp.MySubApp.on("item:add", function(model){
this.myCollection.add(model);
});
如果您想了解有关使用活动的更多信息,请查看我写的2个Marionette教程:
两者都使用事件来传达应用程序内的信息。
此外,此处还解释了基本事件:http://samples.leanpub.com/marionette-gentle-introduction-sample.pdf