Backbone:如何在父视图中触发方法

时间:2013-06-05 03:35:53

标签: backbone.js backbone-views

我有很多视图将使用的字母过滤视图(a,b,c,d等)。我在主视图上设置了一个方法,使用单击的字母从API获取结果。

我通过将回调函数传递给字母过滤器来设置这个,如下所示:

view = new App.Views.Common.AlphabetFiltersIndexView(filterCallback: @paginationFilter)
@$(".pagination-vertical").replaceWith(view.render().el)

调用filterCallback并传递参数有效,但是现在调用的paginationFilter方法属于Alphabet Filters。

问题:如何调用父视图的方法并保持方法与原始顶视图的关系?

3 个答案:

答案 0 :(得分:4)

你可以采用以下两种方式:

  1. 将父视图传递给子视图,或者让您的子视图通过全局对象查找其父视图(如果您正在使用它)。从孩子那里调用父视图的功能

  2. 当您需要调用父视图的函数时,您可以让子视图引发事件。您的父视图应该从子视图中侦听此事件,并通过调用所需方法进行响应。

答案 1 :(得分:4)

您应该使用类似

之类的内容在子视图中触发事件
this.trigger('event', [args]);

并从父视图中听取它

this.listenTo(childView, 'event', this.paginationFilter);

(建议给事件一个正确的名称。考虑一个名称,例如'page:change'。'page'是一种命名空间,只是为了使大型应用程序中的事件更容易命名和组织。没有真正的命名空间功能。)

答案 2 :(得分:0)

您可以在AlphabetFiltersIndexView initialize方法中使用以下下划线调用

_.bindAll(callBackContext, "YourCallBack");

这将确保回调绑定到您选择的对象(父视图)。

您可以将callBackContext"YourCallBack"的值作为参数传递给AlphabetFiltersIndexView,然后您可以根据父视图的上下文控制这些值。