Backbone.js и встроенные ассоциации «один ко многим»

Макет приложения

Я создаю приложение, в котором можно создавать опросы. В каждом опросе есть несколько вопросов. Я встраиваю вопросы в модель опроса (с embeds_many в Mongoid), поэтому опрос может выглядеть так:

{
  "id":    "4f300a68115eed1ddf000004",
  "title": "Example Survey",
  "questions": 
  [
    {
      "id":      "4f300a68115eed1ddf00000a",
      "title":   "Please describe your experience with backbone.js", 
      "type":    "textarea"
    },
    {
      "title":   "Do you like it?", 
      "id":      "4f300a68115eed1ddf00000b",
      "type":    "radiobutton",
      "options": ["Yes", "Yes, a lot!"]
    }
  ]
}

Теперь есть также редактор опроса, который состоит из SurveyView , в котором отображается опрос и перечислены вопросы. Если я нажму на один вопрос, появится всплывающее окно QuestionView , где я могу отредактировать вопрос. Когда я удовлетворен своим опросом и нажимаю кнопку «Сохранить», на сервер будет отправлена ​​модель SurveyModel .

Проблема

Как лучше всего справиться со встроенной ассоциацией?

Если я передаю survey.get ("questions") [any_index] в QuestionView , и вопрос изменится, мне придется вручную искать вопрос .id в моей модели и обновить мою модель. Это неправильно.

Если я создам QuestionsCollection в моей SurveyModel (возможно ли это вообще?).Затем я могу делать такие вещи, как выборка вопроса из этой коллекции по идентификатору, передача его в представление, и когда я изменяю модель, все будет обновляться автоматически, но я должен указать URL-адрес в коллекции, и магистраль будет отправлять на сервер отдельные вопросы, если что-то обновляется.

Есть предложения, как сделать это магистральным способом?

6
задан iblue 12 February 2012 в 12:13
поделиться