1

多くの変数を使用して、堅牢なアプリケーションを成長させています。より高いレベルで変数を作成すると、それは系統を継承する必要があります。変数が継承されることを管理するためのコードを書き続けるには、多くの時間がかかります。常に渡したい変数がわかっている場合(必ずしもバックアップする必要はないため、これらは必ずしもグローバルではなく、単方向であるだけです)、ネーミングを管理することなく、これを達成するために初期化関数にどのメソッドを記述できますかコンベンション?

このコードは各レベルで最も役立つ可能性が高いため、子ビューに渡すパラメーターを親レベルで作成すると、各子ビューはパラメーターを繰り返し処理し、渡された名前でそれらをアタッチします。

したがって、親 View がありFruits、すべての子ビューOrangesを作成し、、、およびのOrangesすべてのNavelsおよびを作成する場合、各属性を反復処理し、それ自体をビューに設定する関数が存在します。親ビューで作成された 5 つの数値属性がある場合、各レベルで、、、のようになります。Valenciasinitialize(options)OrangesNavelsValenciasoptionsoptionsthis.1 = options.1;this.2 = options.2;this.3 = options.3;this.4 = options.4;this.5 = options.5;

これにより、親ビューでのみ名前を管理できますが、名前は各子のファイルには含まれないため、名前を知る必要がありますが、属性は階層全体で一意であるため、これで問題ありません。一意の名前は、子ビューに渡す前に操作できます。

私は中間の子ビューに対して次のようなことを試みていました:

define([ … ], function( … ){
  return Backbone.View.extend({
    events : { … },
    // options = { 1:thing1, 2: thing2, a: itA, b: itB }
    initialize: function(options){
      if (options) {
        for (var key in options) {
          'this.' + key = options[key];  //Here is the line that would accomplish this
        }
      } else { //…defaults… }
    },
    render: function(){
      // If i needed to manipulate them, I could accomplish this here
      var params = {
         1: this.thing1,
         2: this.thing2,
         a: this.itA,
         b: this.itB
      };
      new childView(params);
    }
  });
});
4

2 に答える 2

1

ビューですべての操作を行いたいのはなぜですか。技術的に言えViewば、データModel. そうでない場合、モデルとビューは密接に結合されます。

代わりに、データを必要な形式に変換するモデルを作成します。

parseの前に呼び出されるモデル内の関数がありinitializeます。

したがって、すべての計算はそこで実行でき、ビューは無知になります..

define([ … ], function( … ){
   return Backbone.Model.extend({
        initialize: function() {

        },
        parse: function() {
             // Do your changes here
        }
   });
});
于 2013-07-22T17:43:23.107 に答える
0

@go-oleg ごとに、ブラケット表記を使用しました: this[key] = options[key];

于 2013-09-07T13:39:36.587 に答える