私はしばらくこれに苦労してきました。誰かが私を助けてくれるか見てみましょう。
Readme には明示的に記載されていませんが、ember-data は多少の検証サポートを提供します。コードとドキュメントのいくつかの部分でそれを見ることができます:
https://github.com/emberjs/data/blob/master/packages/ember-data/lib/system/model/states.js#L411
https://github.com/emberjs/data/blob/master/packages/ember-data/lib/system/model/states.js#L529
REST アダプター自体は検証サポートを追加しませんが、ajax 呼び出しに次のようなものを追加すると、サーバー側からのエラー オブジェクトでモデルを「無効」状態にできることがわかりました。
error: function(xhr){
var data = Ember.$.parseJSON(xhr.responseText);
store.recordWasInvalid(record, data.errors);
}
だから私は簡単に次のことができます:
var transaction = App.store.transaction();
var record = transaction.createRecord(App.Post);
record.set('someProperty', 'invalid value');
transaction.commit()
// This makes the validation fail
record.set('someProperty', 'a valid value');
transaction.commit();
// This doesn't trigger the commit again.
問題は、ご覧のとおり、トランザクションは再コミットしようとしないということです。これについては、こちらとこちらで説明しています。
つまり、コミットを再利用できない場合、これをどのように処理すればよいでしょうか? モデルを非同期的にinvalid
状態にするという事実に関係があるのではないかと思います-ドキュメントを読むと、クライアント側の検証を目的としたもののようです。この場合、どのように使用すればよいですか?