2016-04-13 34 views
0

現在のところ、定義のすぐ下のビューをインスタンス化するだけですが、これを行うより良い方法があるかどうか疑問に思っていましたか?Backboneで自己インスタンス化ビューを作成するにはどうすればよいですか?

var BVApp = Backbone.View.extend({ 
    Name: 'BVApp', 
    // do chonka stuff 
}); 
$A.Class.add(new BVApp()); 
+0

あなたが好きな理由はありませんどのような追加してくださいもらえますか?バックボーンオブジェクトは 'new'を使ってインスタンス化する必要があります - ' new'を離しておくことを期待していますか? –

+0

さて、おそらく数行のコードで自動的にインスタンス化する 'Backbone.ViewAuto'というラッパーを書くことができます。 –

+0

あなたが入力したり、意図したことがあるために4つの文字が新しくなりましたか?注:「new」よりも短い「インスタンス化」するための一般的な方法はありません。だから、それが本当にコード長さの問題ならば、気にしないでください。 –

答えて

0

(あなたが何らかの形で、どこかでそれをインスタンス化する必要があるため!)それ自体は「自己インスタンス化ビュー」を作成する方法はありませんが、あなたが望むものを達成する方法があるかもしれません。

$A.Class.addInstantiated = function (ObjectConstructor) { 
    this.add(new ObjectConstructor()); 
}; 
  • が何をしたいがある場合:

    1. はあなたのビューをインスタンス化し、追加するメソッドを作成します。あなたの具体的な目標に応じて、私は明示的にオブジェクトをインスタンス化する必要が周りを取得する2つの方法をご覧ください

      define([], function() { 
          function Foo(a) { 
           // ...does stuff... 
          } 
      
          return new Foo(); 
      }); 
      

      この方法で、あなたのモジュールのすべての使用:シングルトン、そしてあなたがRequireJSのようなモジュールローダを使用している、あなたは実際にはインスタンス化されたオブジェクトを返すことができます。インスタンス化された同じオブジェクトになります。このアプローチの1つの欠点は、特にテスト可能ではないことですが、インスタンス化されていないモデルを1つのモジュールに入れて、それを第2のモジュールのシングルトンとしてインスタンス化することでこの問題を回避できます。例えば:

      define([], function() { 
          function Foo(a) { 
           // ...does stuff... 
          } 
      
          return Foo; 
      }); 
      
      define(['foo'], function (Foo) { 
          return new Foo(); 
      }); 
      
  • 関連する問題