Другой способ справиться с этим обещанием?
Вот немного кофе, но не стесняйтесь отвечать в javascript:
model = new MyModel content: content
model.save()
@collection.add model
В другом месте вид слушает add
событие в коллекции…
_addOne: (model, collection, options)=>
view = new MyView model: model
@subviews[model.id] = view
Иногда модель не заканчивала общаться с сервером, поэтому у нее не было id
и этот код не смог сделать то, что хотел. Итак, я завернул save
в обещании, используя библиотеку when.js (when
сопоставлен с When
Вот)
When model.save()
.then =>
@collection.add model
Теперь все в порядке с миром. Мне интересно, есть ли способ получить then
в _addOne
метод, потому что это то, что действительно ждет, сама коллекция не против того, чтобы к ней добавили полусгоревшую модель.
Если бы кто-нибудь мог показать мне или указать мне правильное направление, я был бы очень благодарен.
1 ответ
Использование Collection#create
вместо:
createcollection.create (атрибуты, [параметры])
Удобство для создания нового экземпляра модели в коллекции. Эквивалентно созданию экземпляра модели с хешем атрибутов, сохранению модели на сервере и добавлению модели в набор после ее успешного создания. [...] Проходить
{wait: true}
если вы хотите подождать сервера, прежде чем добавлять новую модель в коллекцию.
Итак, если вы сделаете это:
@collection.create(
{ content: content }
{ wait: true }
)
Тогда модель не будет добавлена в коллекцию, пока сервер не ответит, и модель получит свой сервер. id
тогда.