我正在使用Backbone.js开发一个应用程序
我有2个视图,我想使用在其他视图中定义的函数:
var FormView = Backbone.View.extend({
initialize: function(){
resultsView.myFunction();
}
})
var resultsView = Backbone.View.extend({
myFunction: function(){
alert('test')
}
})
我怎么做?
答案 0 :(得分:5)
你正在以相反的方式做这件事。您可以执行其他视图可以扩展和实现的base view
,例如:
/** Any Views that inherit from this View can use the myFunction() */
var BaseView = Backbone.View ({
myFunction : function(param) {
alert(param);
}
});
/** Inherit from the base view above */
var ChildView = BaseView.extend({
initialize : function(){
this.myFunction('test');
}
});
var instanceView = new ChildView({});
答案 1 :(得分:2)
答案 2 :(得分:1)
使用Backbone.View.extend
时,您正在创建class
。要使用该类,您需要使用instance
运算符创建new
。通常使用大写字母和带有小写字母的实例变量名称来启动类名称,因此我将在以下示例中使用该命名约定:
//declare view class
var ResultsView = Backbone.View.extend({
myFunction: function(){
alert('test')
}
});
创建该类的实例,并将其传递到FormView
:
var resultsView = new ResultsView();
var formView = new FormView({ resultsView: resultsView });
访问FormView.initialize
中传递的参数:
var FormView = Backbone.View.extend({
initialize: function(options){
options.resultsView.myFunction();
}
});