Backbone.js访问另一个视图函数

时间:2013-02-25 17:20:20

标签: javascript backbone.js

我正在使用Backbone.js开发一个应用程序

我有2个视图,我想使用在其他视图中定义的函数:

var FormView = Backbone.View.extend({
  initialize: function(){
    resultsView.myFunction();
  }

})


var resultsView = Backbone.View.extend({
  myFunction: function(){
    alert('test')
  }
})

我怎么做?

3 个答案:

答案 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)

为什么不使用活动?

routing-and-the-event-aggregator-coordinating

答案 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();
  }
});