我已经为此苦苦挣扎了一段时间;让我们看看是否有人可以帮助我。
尽管自述文件中没有明确说明,但 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.
问题是:如您所见,事务不会尝试重新提交。这是解释here和here。
所以问题是:如果我不能重用提交,我应该如何处理?我有点怀疑这与我异步将模型置于invalid
状态这一事实有关 - 通过阅读文档,这似乎是用于客户端验证的东西。在这种情况下,我应该如何使用它们?