Как предотвратить передачу модели с помощью данных ember?

Я использую последний rev ember-data, и у меня типичная ситуация, когда большинство моделей нужно управлять с помощью ember-data, поэтому, когда я делаю фиксацию в хранилище, они синхронизируются с бэкэнд. В одном конкретном случае у меня есть модель, которая используется только clientide (но я создал это как DS.Model, потому что она имеет отношения с другими моделями данных ember-данных в запущенном приложении).

Что я могу отметить на самой модели, чтобы убедиться, что она никогда не выглядит «грязной» или «новой»,

Я попытался сделать что-то подобное, когда объект создан, но по-прежнему он отслеживается по какой-то нечетной причине

App.Foo.createRecord({name: 'foo', loaded: true, new: false, dirty: false});
2

1 ответы

Вы можете добавить модель к своей собственной транзакции.

transaction = this.get('store').transaction();
myObject = transaction.createRecord(App.Foo, {name: 'foo', loaded: true, new: false, dirty: false});
transaction.commit();
// or alternatively: myObject.transaction.commit()

Обычный store.commit() не будет влиять на объекты в этой транзакции.

Ember фактически создает транзакцию по умолчанию в фоновом режиме, что и происходит, когда вы вызываете голый this.get ('store'). Commit ();

Вы также можете добавить существующие записи в транзакцию, перейдя:

foo = App.Foo.find(1);
transaction = this.get('store').transaction();
transaction.add(foo);
foo.set('name', 'bar');
transaction.commit();

Если вы не хотите совершать транзакции, а также не хотите, чтобы изменения, которые вы делали в ней, лежали, вы можете просто позвонить:

transaction.rollback();
2
добавлено
хороший -thanks для пылающего быстрого ответа кстати!
добавлено автор Toran Billups, источник
поэтому он отлично работает, если я просто не сделаю последнего шага, который вы упомянули «transaction.commit» - если я это сделаю, он попытается сделать http-сообщение для каждого элемента в этой транзакции (вместо этого я просто не хочу их совершать) , Обертывание его внутри моей транзакции (вместо дефолта) предотвращает массовую пакетную загрузку, когда я делаю фиксацию в хранилище (глобально), поэтому, похоже, это то, что я искал (не уверен в первоочередных задачах (управление памятью) провести все это в сделке и никогда не совершать ее))
добавлено автор Toran Billups, источник
Не беспокойтесь, я просто работал с ними, так что это было свежо в моем сознании.
добавлено автор Andre Malan, источник
Да, извините, что это было не более ясно, фиксация предназначена для того, чтобы/когда вы хотите совершать вещи. Будет обновляться о том, как очистить вещи, используя откат.
добавлено автор Andre Malan, источник
Ember_js
Ember_js
153 участник(ов)

Cообщество Ember.js