3

新しい backbone.js モデルを作成すると、「デフォルト」の属性は無視されず、モデルの初期値になります。
モデルで「クリア」を呼び出すと、それらが無視されるのはなぜですか。
その背後に何か理由がありますか?
「デフォルト」があるのに、モデルのすべてのプロパティが 0 または「」(スペース) である状態が必要なのはなぜですか?
誰かが私にその実世界の例を教えてもらえますか?

たとえば、私のモデルの 1 つに、「ステータス」というプロパティがあります。初期値は「x」ですが、ユーザーは「b」または「u」に変更できます。"" (スペース) は有効な値ではありません。したがって、モデルでは、私は

 defaults: {
   "status":  "x"
 }

ユーザーがモデルの値を編集できる詳細コンポーネントには、「消去」というボタンがあります。彼がそうすると、モデルは初期状態になります。この場合、すべてのプロパティをゼロまたはスペースに設定する関数は必要ありません。

モデルに「デフォルト」がある場合、backbone.js の作成者が「クリア」メソッドをチェックインし、そうであれば、すべての値を削除してからデフォルトを取得するのは簡単だったでしょう。


ヴォルフガング、よろしくお願いします

4

2 に答える 2

5

同様のニーズがありました。フレームワークの作成者は、フレームワークを自分で使用するわけではないため、実際のユース ケースをすべて予測することはできません。直接聞いたほうがいいhttps://github.com/documentcloud/backbone

どう見てもジャバスクリプトだろ

Backbone.Model.prototype.resetToDefaults = function() {
    this.clear();
    this.set(this.defaults);
};
于 2012-09-05T13:37:22.133 に答える
2

気に入らなければ上書き

var Model = Backbone.Model.extend({
  clear: function(options) {
    Backbone.Model.prototype.clear.apply(this, arguments); // or something like this
    return this.set(_.clone(this.defaults));
  }
});

これで、カスタム モデルをすべてのモデルのベースとして使用できるようになりました

var MyModel = Model.extend({...});

この簡単なことを行うのが面倒な場合は、これを backbone.js の git issuesに投稿できます。

お役に立てれば!

于 2012-09-05T13:39:55.703 に答える