0

バックボーン バックボーンを使用している場合の 2 つの一般的なシナリオ:

属性はデフォルト値としてリストされ、設定されます

modelExample_A: Backbone.Model.extend({
  defaults: {
    whatever: 'foo'
    something: 'blah'
  }
});

viewExample_A: Backbone.View.extend({
  //our view definition
});

var Example_A = new viewExample_A({
  model: new modelExample_A()
})
Example_A.set({
  'whatever': 'bar',
  'something': 'weeeeeee',
});

属性がデフォルト値としてリストされていないため、設定します

modelExample_A: Backbone.Model.extend({
});

viewExample_A: Backbone.View.extend({
  //our view definition
});

var Example_A = new viewExample_A({
  model: new modelExample_A()
})
Example_A.set({
  'whatever': 'bar',
  'something': 'weeeeeee',
});

属性はデフォルト値として表示されず、作成時に設定されます

modelExample_A: Backbone.Model.extend({
});

viewExample_A: Backbone.View.extend({
  //our view definition
});

var Example_A = new viewExample_A({
  model: new modelExample_A({
    'whatever': 'bar',
    'something': 'weeeeeee',
  })
})

しかし、モデルのプロパティを設定したい状況はどうでしょうか? これは一般的に推奨されていませんが、私のコードでは、どのモデルが現在のモデルの親であるかを not にしたい場合があります。これはほぼ確実に変更されることはないため、イベントのリッスン/onChange の目的で属性を配置する理由はありません。また、これはデフォルト値のないもの(コンテキストでしか値を取得できない)なので、モデルのプロパティとして設定するだけでいいですか?それとも、これは後で問題を引き起こすのでしょうか?

属性の代わりにプロパティを設定する

modelExample_A: Backbone.Model.extend({
  defaults: {
    whatever: 'foo'
    something: 'blah'
  }
});

viewExample_A: Backbone.View.extend({
  //our view definition
});

var Example_A = new viewExample_A({
  model: new modelExample_A({
    'whatever': 'bar',
    'something': 'weeeeeee',
  })
})
Example_A.parentModel = parentModelExample;
4

1 に答える 1

3

モデル インスタンスに非属性プロパティを設定することは、適度に考慮して使用することで問題ありません。これが簡単に一貫性のない状態になる可能性のあるデータにならないように注意してください。これを頻繁に行う場合、それはコードの匂いです。その場合、いくつかの状態を属性を持つ実際のモデルとしてモデル化することを検討したいかもしれませんが、それらを永続化するだけではありません (決して を呼び出さないでください.save)。

于 2013-07-22T23:36:57.070 に答える