2013-10-15 5 views
0

Я новичок в Backbone, и у меня есть проблема с вложенными моделями. Здесь у меня есть data.json, где я следующий JSON:Вложенные модели в базовой линии

[ 
    { 
     "name": "Project", 
     "description" : "This is a Peugeot website", 
     "url" : "http://peugeot.am", 
     "images" : [ 
      { "image" : "A", "thumb" : "a" }, 
      { "image" : "B", "thumb" : "b" }, 
      { "image" : "C", "thumb" : "c" } 
     ] 
    }, 
    { 
     "name" : "Ararat", 
     "description" : "This is a Ararat website", 
     "url" : "http://ararat.am", 
     "images" : [ 
      { "image" : "A", "thumb" : "a" }, 
      { "image" : "B", "thumb" : "b" }, 
      { "image" : "C", "thumb" : "c" } 
     ] 
    }, 
    { 
     "name" : "Procredit Bank", 
     "description" : "This is a Procredit Bank website", 
     "url" : "http://procredit.am", 
     "images" : [ 
      { "image" : "A", "thumb" : "a" }, 
      { "image" : "B", "thumb" : "b" }, 
      { "image" : "C", "thumb" : "c" } 
     ] 
    } 
] 

В Backbone я пытаюсь получить данные, но я получаю пустой массив.

var myapp = myapp || {}; 

$(function() { 

    myapp.Image= Backbone.Model.extend({ 
     initialize: function() { 
      this.Img = this.get('image'); 
      this.Thumb = this.get('thumb'); 
     } 
    }); 

    myapp.Images= Backbone.Collection.extend({ model: myapp.Image }); 

    myapp.Item= Backbone.Model.extend({ 
     initialize: function() { 
      this.Name = this.get('name'); 
      this.Description = this.get('description'); 
      this.URL = this.get('url'); 
      this.subs = new myapp.Images(this.get('images')); 
     } 
    }); 

    myapp.Items= Backbone.Collection.extend({ 
     model: myapp.Item, 
     url: 'content/js/data.json', 
     parse: function (resp, xhr) { return JSON.parse(resp); } 
    }); 

    var items = new myapp.Items(); 
    items.fetch(); 
    console.log(items.toJSON()); 
}); 

Теперь, что я делаю неправильно выше? Мне нужно получить данные, чтобы получить JSON, чтобы начать с ним манипулировать.

Заранее благодарен!

ответ

0

поддержка по умолчанию очень не хватает вам потребуется, чтобы получить данные для каждой вложенной модели отдельно

Есть библиотека, такие как

https://github.com/powmedia/backbone-deep-model

и

http://afeld.github.io/backbone-nested/

Вместо этого можно использовать

+0

Спасибо за ссылки! –

+0

У меня не было серьезных проблем с использованием подсетей за один раз, я использовал подобную структуру данных - это просто не очень хорошо документировано. – Marcus

0
items.fetch(); 
console.log(items.toJSON()); 

Collection.fetch() - это асинхронная операция. Он не будет выдавать ответ, пока запрос не вернется с сервера. Попробуйте это:

items.fetch().done(function(){ 
    console.log(items.toJSON()); 
}); 

Вы также можете использовать веб-инспектор в Safari/хром (или FireFox отладчик/поджигатель) для мониторинга сетевых запросов и убедитесь, что ваши звонки успешно стрелять (и инспектировать ответов), или поставить еще console.log внутри функции «parse» вашей коллекции.

http://backbonejs.org/#Collection-fetch

+0

Это не помогло, я все равно получаю пустой массив –

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