2013-08-21 4 views
2

У меня возникла проблема с путаницей, кто-нибудь из моих сомнений и дайте более подробную информацию о http://backbonerelational.org/, пожалуйста?Почему/Когда я должен использовать базовую реляционную структуру

в основном,

  1. Почему мы используем реляционную

  2. Когда нам нужно принять решение об использовании, что

  3. Мы не можем достигнуть того же самого с Backone.js ..?

я этот сценарий, у меня есть образец JSON как это:

var navi = { 
    "mainLinkLabel": "Home", 
    "mainLinkHref": "/home.html", 
    "sublinks": [ 
     { 
      "sublinkLabel": "subHome1", 
      "sublinkHref": "/home/home1.html" 
     }, 
     { 
      "sublinkLabel": "subHome2", 
      "sublinkHref": "/home/home2.html" 
     }, 
     { 
      "sublinkLabel": "subHome3", 
      "sublinkHref": "/home/home3.html" 
     } 
    ] 
} 

он в Mainlink и sublinks:

для этого я должен сделать модель как бы покрыть как информация:

var bothModels = Backbone.Model.extend({ 

    defautls:{ 

     "mainLinkLable" : "default Lable", 
     "mainLinkHref" : "#", 
     "sublinks"  : [ 
      "sublinkLabel" : "default sublink", 
      "sublinkHref" : "#" 
     ] 

    } 

}) 

или мне нужно сделать отдельные модели для каждого и подключиться к Backbone-relational .. lik Это?

var mainModel = Backbone.Model.extend({ 
    defautls:{ 

     "mainLinkLable" : "default Lable", 
     "mainLinkHref" : "#" 

    } 
}) 

var subModel = Backbone.Model.extend({ 
    defaults:{ 
      "sublinkLabel" : "default sublink", 
      "sublinkHref" : "#" 
    } 
}) 

если да, то как я могу подключить обе эти модели ... и какая польза я получу. Я ищу через Интернет, чтобы найти какой-то простой учебник, чтобы понять это. Но я не мог прийти с некоторыми.

любой пояснив мне этот сценарий, пожалуйста ..?

Here is the fiddle to play

+0

Вы принимаете правильный подход. Создайте две отдельные модели.И у первой модели будет атрибут, который снова будет вспомогательной моделью коллекции. Поступая таким образом, у вас будет сублинс в виде вложенной коллекции внутри модели. Это позволит использовать все зависимые данные на одной модели вместо отдельной коллекции вне модели –

+0

. Можете ли вы показать мне или обновить скрипку для живой демонстрации .. и нет никакой работы для базового реляционного здесь ..? – 3gwebtrain

ответ

2

я не работал с Backbone реляционные раньше. Но я бы построил структуру, используя 2 модели и имея метод parse на модели и передавая основную коллекцию.

var navi = { 
    "mainLinkLabel": "Home", 
    "mainLinkHref": "/home.html", 
    "sublinks": [{ 
     "sublinkLabel": "subHome1", 
     "sublinkHref": "/home/home1.html" 
    }, { 
     "sublinkLabel": "subHome2", 
     "sublinkHref": "/home/home2.html" 
    }, { 
     "sublinkLabel": "subHome3", 
     "sublinkHref": "/home/home3.html" 
    }] 
}; 


var MainModel = Backbone.Model.extend({ 
    defauts: { 
     "mainLinkLable": "default Lable", 
     "mainLinkHref": "#" 
    }, 
    parse: function(response) { 
     if(response.sublinks) { 
      this.subCollection = new SubCollection(response.sublinks || null, { parse: true }); 
     } 
     delete response.sublinks; 

     return response; 
    } 
}) 

var SubModel = Backbone.Model.extend({ 
    defaults: { 
     "sublinkLabel": "default sublink", 
     "sublinkHref": "#" 
    } 
}); 

var MainCollection = Backbone.Collection.extend({ 
    model: MainModel 
}); 

var SubCollection = Backbone.Collection.extend({ 
    model: SubModel 
}); 

var mainCollection = new MainCollection(navi, {parse : true}); 

console.log(mainCollection); 

jsFiddle

Так что если вы хотите получить доступ к коллекции sublinks внутри каждой модели. Вы бы просто использовали

this.subCollection, который дал бы вам эту коллекцию.

+0

Шушат, спасибо за вашу инициативу, все-таки вы можете заглянуть в ответ alexanderb, пожалуйста ..? – 3gwebtrain

1

Backbone.js не поддерживает вложенные модели из коробки. На самом деле вы очень много разбираетесь с вложенными моделями: счета-фактуры содержат строки, отделы содержат сотрудников и т. Д.

Вы должны изучить модель bussine, если у вас есть вложенные модели, как указано выше, Backbone.Relational поможет вам.

Вы в основном не можете архивировать это с помощью Backbone.js себя, ожидайте написания собственного кода, чтобы перегрузить parse метод моделей. Мы сделали это на одном из проектов, которые я работаю, но основной урок - использовать плагин с временным провентом вместо собственного переосмысления колес. И Backbone.Relational кажется хорошим выбором.

+0

ОК, но в моем случае, как я использую Backbone.relational .. вы можете дать подсказку .. пожалуйста – 3gwebtrain

+0

проверить примеры, которые можно начать: http://backbonerelational.org/#examples –

Смежные вопросы