我有很多视图将使用的字母过滤视图(a,b,c,d等)。我在主视图上设置了一个方法,使用单击的字母从API获取结果。
我通过将回调函数传递给字母过滤器来设置这个,如下所示:
view = new App.Views.Common.AlphabetFiltersIndexView(filterCallback: @paginationFilter)
@$(".pagination-vertical").replaceWith(view.render().el)
调用filterCallback并传递参数有效,但是现在调用的paginationFilter方法属于Alphabet Filters。
问题:如何调用父视图的方法并保持方法与原始顶视图的关系?
答案 0 :(得分:4)
你可以采用以下两种方式:
将父视图传递给子视图,或者让您的子视图通过全局对象查找其父视图(如果您正在使用它)。从孩子那里调用父视图的功能
当您需要调用父视图的函数时,您可以让子视图引发事件。您的父视图应该从子视图中侦听此事件,并通过调用所需方法进行响应。
答案 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
,然后您可以根据父视图的上下文控制这些值。