Backbone collection.create() не возвращает обновленную модель

Чтобы изучить основу, я создаю приложение, похожее на Twitter. Итак, вы знаете, что Twitter отправляет запрос GET на сервер каждые N секунд, чтобы проверить наличие новых твитов. Если есть новые твиты, он создает скрытые элементы liи показывает кнопку с «N новых твитов». Если вы щелкнете по нему, он покажет скрытые элементы li, показывающие новые твиты. Но поведение отличается, когда вы добавляете новый твит: твит виден. Вам не нужно нажимать кнопку, чтобы увидеть его.

Я уже сделал первую часть, для скрытых твитов. Что касается публикации нового твита и показа его напрямую, я подумал, что это будет легко сделать, создав новую модель, вызвав collection.create() и вызывает правильное событие, например:

var newTweet = new Tweet();
newTweet.set( /* set the attributes here. Some attributes are missing, because they are calculated server side */ );

var created_tweet = this.collection.create( newTweet, { silent: true, wait: true } ); // I choose silent=true because the add event on my collection is in charge of adding the new hidden tweets when there are new ones on the server
this.collection.trigger("posted_new_tweet", created_tweet);

Затем моя коллекция подписывается на событие "posted_new_tweet", поэтому каждый раз, когда пользователь публикует новый твит, вызывается определенный метод моей коллекции. Этот подход работал нормально, пока я не получил ошибки из-за переменной created_comment, переданной в триггер: он не «полный». Я имею в виду, что у модели есть некоторые атрибуты, такие как "id" или *"created_on"*, которые не определены. Эти атрибуты вычисляются на стороне сервера, но я думал, что если я передам wait=true, он будет ждать и обновлять мою модель с ответом, данным сервером (когда запрос POSTсделанный на сервер, он возвращает новую созданную модель в json)

Разве моя модель не должна также иметь атрибуты на стороне сервера? Это правильный подход для такой вещи? В случае, если это не так, как я могу иметь 2 разных метода для отображения представления коллекции?

Спасибо!

5
задан mu is too short 2 May 2012 в 23:43
поделиться