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と、を作成することになりますclassinstanceクラスを使用するには、 usingnew演算子を作成する必要があります。クラス名は大文字で開始し、インスタンス変数名は小文字で開始するのが一般的であるため、次のサンプルではその命名規則を使用します。

//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 に答える