値が単純な属性であれば、バックボーン モデル.get()
とルーチンは問題ありません。.set()
ただし、値も JSON オブジェクトであるアプリを継承しました。
つまり、model.get("key")
戻ります
{start:
{top:5, bottom:6},
end:{...}
}
これらの値のいずれかを使用して設定すること.set()
は PITA です。古い値を引き出し、必要な変更を行い、再度パントする必要があるためです。つまり、bottom
= 7 が必要な場合は、単に行うことはできません.set("start.bottom",7)
。私は次のようなことをする必要があります:
var tempValue = model.get("start");
tempValue.bottom = 7;
model.set("start",tempValue)
モデルには属性プロパティがあり、そこで実行できますmodel.attributes.start.bottom = 7
。これはおそらくイベント ハンドラを起動しません。バックボーン コードを見ると、set
.
2つの質問:
- 変更ハンドラを起動する必要がない場合、属性を直接設定することに何か問題がありますか。
- 属性を設定した後、手動で変更ハンドラを起動する方法はありますか?
バックボーンの変更ログには、「遅延属性の変更が利用できなくなったため、Model#change メソッドは削除されました」と記載されていますが、これがなぜなのかは完全にはわかりません。便利そうですね。
これに関連: HTML フォームをモデルに解析しようとしています。ModelBinder を使用しようとしていますが、ネストされた JSON を処理できません。例えば<input type="text" name="start.top">
model.set({})
編集:オブジェクトでできることに気づきました。例:model.set({start :{top:7}});
しかし、それは少し不格好です