Скажем, у меня есть приложение Backbone с коллекцией сообщений. Все сообщения принадлежат блогу. Создание нового сообщения требует, чтобы я знал блог, которому он принадлежит: POST /blog/42/posts
Вот то, что я до сих пор придумал - скажите, пожалуйста, есть ли лучшее решение:
Зная, что Backbone не ожидает от меня моделирования отношений между моими моделями, я просто превратил атрибут url
в функцию, включающую идентификатор блога:
class App.Collections.PostsCollection extends Backbone.Collection
model: App.Models.Post
url: -> "/blog/" + this.blogId + "/posts"
(Пожалуйста, извините за CoffeeScript.) Теперь мне нужно сделать blogId
известным коллекции сообщений. Так что я просто добавляю его в функцию инициализации маршрутизатора:
class App.Routers.PostsRouter extends Backbone.Router
initialize: (options) ->
this.posts = new App.Collections.PostsCollection()
this.posts.blogId = 42 # <----- in reality some meaningful expression ;-)
this.posts.reset options.positions
Это просто не может быть правдой?!
Пожалуйста, просветите меня - как вы обычно моделируете эти вложенные коллекции?