не могу получить доступ к модели в backbone.js - PullRequest
0 голосов
/ 23 марта 2012

У меня есть этот результат от остальных услуг, которые у меня есть: enter image description here

enter image description here

ПРИМЕЧАНИЕ: Ответ в формате JSON, это плагин от Chrome, который отображает его так

Если вы посмотрите на изображение два [над этим], атрибуты моделей - Предметы , то каждый элемент находится в разделе Предметы.Что я должен сделать, чтобы получить доступ к item ?

Моя проблема в том, что я не могу получить доступ к данным каждого элемента или получить их из этого результата.Я не должен ничего менять со стороны сервера, хотя.Я использую магистраль с этим кодом.

window.Item = Backbone.Model.extend();

window.ItemCollection = Backbone.Collection.extend({
model: Item,
url: 'http://localhost/InterprisePOS/Product/loaditembycategory/Event Materials'
});

window.ItemListView = Backbone.View.extend({
tagName : 'ul',
initialize: function(){
    this.model.bind("reset",this.render,this);
},
render: function(eventName){
    _.each(this.model.models.Items, function(item){
        $(this.el).append(new ItemListItemView({model:item}).render.el);
    },this);
    return this;
}
 });

 window.ItemListItemView = Backbone.View.extend({
template : _.template($("#item-list").html()),

render: function(eventName){
    $(this.el).html(this.template(this.model.toJSON()));
    return this;
}
 });

 var AppRouter = Backbone.Router.extend({
routes:{
    "":"list"
},
list:function(){
    this.itemList = new ItemCollection();
    this.itemListView = new ItemListView({model:this.itemList});
    this.itemList.fetch();
    $("#itemContainer").html(this.itemListView.render().el);
}
 });

 var app = new AppRouter();
 Backbone.history.start();

ОБНОВЛЕНИЕ

Мне удалось исправить мою проблему с вложенными объектами json.Теперь атрибут «Модели» или «Моя коллекция» заполнен отдельными элементами.Но все же проблема в том, что он не работает и не отображает мои представления.

enter image description here

Это код, который я добавил:

parse: function(response) {
return response.Items;
}

ОБНОВЛЕНИЕ

Я наконец-то ответил на мой вопрос!horray!почему-то я забыл поставить "()" на визуализации в моем ItemListview.а также $("#ItemContainer"), похоже, не работает, поэтому я сделал это до $('#ItemContainer), теперь я показываю детали из моей модели.

Ответы [ 2 ]

0 голосов
/ 23 марта 2012

Убедитесь, что ответ возвращается как JSON.Магистраль работает с данными JSON по умолчанию.

0 голосов
/ 23 марта 2012

Я вполне уверен, что Backbone по умолчанию использует JSON для всех запросов и не знает, что делать с XML, вам, вероятно, потребуется переопределить метод синхронизации для коллекции, чтобы мы использовали XML.

Следующие сведения могут быть полезны при решении вашей проблемы: http://newcome.wordpress.com/2011/02/20/consuming-xml-web-services-in-backbone-js-using-jath/

Они используют сторонний анализатор библиотек xml в операции синтаксического анализа, которая преобразует модель в JSON, который Backbone может использовать изначально.

...