Каков стандартный шаблон проверки Ember-данных? (недействительное состояние, стало недействительным…)

Я некоторое время мучился с этим; посмотрим, может ли кто-нибудь мне помочь.

Хотя в файле 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.

Дело в том, что, как видите, транзакции не пытаются повторно зафиксировать. Это объясняется здесьи здесь.

Итак, дело в следующем: если я не могу повторно использовать фиксацию, как мне с этим справиться? Я подозреваю, что это как-то связано с тем фактом, что я асинхронно переводил модель в недопустимоесостояние — по чтению документации, кажется, что это что-то предназначено для клиентской стороны проверки.В таком случае, как мне их использовать?

16
задан Bill the Lizard 18 February 2014 в 03:13
поделиться