3

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

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

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

})


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

我该怎么做?

4

3 回答 3

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({});
于 2013-02-25T17:32:56.263 回答
2

为什么不使用事件?

路由和事件聚合器协调

于 2013-02-26T13:16:48.120 回答
1

当您使用 时Backbone.View.extend,您正在创建一个class. 为了使用该类,您需要创建一个instanceusingnew运算符。按照惯例,类名以大写字母开头,实例变量名以小写字母开头,因此我将在以下示例中使用该命名约定:

//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();
  }
});
于 2013-02-25T17:34:28.103 回答