Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Backbone.js访问另一个视图函数_Javascript_Backbone.js - Fatal编程技术网

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

Javascript Backbone.js访问另一个视图函数,javascript,backbone.js,Javascript,Backbone.js,我正在用Backbone.js开发一个应用程序 我有2个视图,我想使用在其他视图中定义的函数: var FormView = Backbone.View.extend({ initialize: function(){ resultsView.myFunction(); } }) var resultsView = Backbone.View.extend({ myFunction: function(){ alert('test') } }) 我该怎么做

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

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

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

})


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

我该怎么做呢?

你的做法正好相反。您可以执行其他视图可以扩展和实现的
基本视图
,例如:

/** 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({});

当您使用
主干.View.extend
时,您正在创建一个
。为了使用该类,您需要使用
new
操作符创建一个
实例。通常以大写字母开始类名,以小写字母开始实例变量名,因此我将在以下示例中使用该命名约定:

//declare view class
var ResultsView = Backbone.View.extend({
  myFunction: function(){
    alert('test')
  }
});
创建类的实例,并将其传递到
FormView

var resultsView = new ResultsView();
var formView = new FormView({ resultsView: resultsView });
访问
窗体视图中传递的参数。初始化

var FormView = Backbone.View.extend({
  initialize: function(options){
    options.resultsView.myFunction();
  }
});
为什么不使用事件


一般来说,您不想这样做。你最终会得到意大利面代码。如果它是一个普通函数,就把它抽象出来。如果函数确实与resultsView应该关注的内容有关,则侦听模型中的更改或在resultsView侦听的formView上触发事件。