2017-01-27 11 views
-1

Я пытаюсь получить данные JSON из API с помощью BackboneJS, но я не могу понять, почему мой код не работает.Простой вызов API BackboneJS

var foodUrl = 'https://jsonplaceholder.typicode.com/posts/1'; 

var foods = Backbone.Model.extend({ 
    url: foodUrl 
}); 

var foodTypes = Backbone.Collection.extend({ 
    model: foods 
}); 

var Food = new foodTypes(); 

var bar = new foods({ 
    url: foodUrl 
}); 

Food.add(bar); 

console.log(Food.get(bar)); 
+0

Прочитайте [документацию] (http://backbonejs.org/#), это коротко и хорошо объяснено. Затем, если этого недостаточно, выполните поиск в google для учебника Backbone. Вы начнете быстро. –

ответ

2

Самый простой вызов к API с Backbone:

var model = new Backbone.Model({ id: 1 }); 
model.fetch({ url: 'https://jsonplaceholder.typicode.com/posts/' }); 
// GET https://jsonplaceholder.typicode.com/posts/1 

Более полный пример будет включать в себя расширение в Backbone Model указать по умолчанию urlRoot. Модель Backbone должна использоваться, чтобы содержать только один объект модели данных, в то время как коллекция представляет собой массив объектов.

// create a model class 
var Food = Backbone.Model.extend({ 
    urlRoot: 'https://jsonplaceholder.typicode.com/posts/', 
}); 

// create an instance of that model class 
var model = new Food({ id: 1 }); 

// make the async API request 
model.fetch(); 
// GET https://jsonplaceholder.typicode.com/posts/1 

Извлечение модели предполагает получение хэша атрибутов JSON по умолчанию.

Запрос на выбор асинхронный, поэтому вы не сможете сразу использовать атрибуты, для этого вам потребуется использовать обратный вызов.

model.fetch({ 
    success: function(){ 
     console.log(model.attributes); 
    } 
}); 

Вы также можете получить массив объектов, используя коллекцию.

var FoodCollection = Backbone.Collection.extend({ 
    model: Food, 
    url: 'https://jsonplaceholder.typicode.com/posts/' 
}); 

var collection = new FoodCollection(); 

collection.fetch({ 
    success: function(){ 
     console.log(collection.models); 
    } 
}); 
+1

Я только надеюсь, что OP замечает, что вы использовали капитальное письмо для конструктора и небольшое для экземпляров ... Это очень сбивает с толку, когда люди меняют контуры –