我正在使用我的第一款Backbone应用程序CRUD风格。
我有modelListView
,其中一个编辑按钮链接到modelView
。 modelView有一个删除按钮来销毁模型。
现在我想要实现的是在用户返回modelListView
时以及成功删除模型时向用户显示成功消息。
我在model:deleted
内触发了success
个事件,但是modelListView
的听众:
initialize: function(){
this.on('wine:deleted', function(){
alert('wine:deleted')
})
},
不能“听到”那个。这种视角间沟通的最佳做法是什么?
答案 0 :(得分:1)
我使用过几种方法。一种方法是让两个视图都包含对同一模型的引用 - 然后您可以根据需要了解的模型从所讨论的模型中监听事件。第二种是使用event aggregator,本质上是一个事件对象,它提供了一个路由事件的位置,因此您可以减少视图监听事件所需的对象数量。我使用的通常是应用程序的复杂性以及我需要路由事件的模型/集合对象的数量。
答案 1 :(得分:0)
我认为你的基本问题是这一行:
this.on('wine:deleted', function(){
你说这行代码来自modelListView
,但事实是,Views
没有on
方法(只有Model
s和{{1 s)。我想你要找的是:
Collection
但即使这样也不太正确,因为命名空间似乎很有趣。如果我认为你在做:
this.model.on('wine:deleted', function(){
在您的Wine模型中,然后捕捉您刚才需要的事件:
this.trigger('deleted');
然而,即使这看起来有点过分,因为Backbone已经有一个事件可以在this.model.on('deleted', function(){
被破坏时使用,不需要任何额外的Model
语句:
trigger
希望有所帮助。