2012-03-23 2 views
0

backbone.js에 모델에 액세스 할 수 없습니다 내가 가지고 enter image description here내가 편안한 서비스에서이 결과를 가지고

enter image description here

참고 : 응답이 JSON 형식으로이처럼 표시 크롬에서 플러그인입니다 그.

이미지 2 [위의 모델] 모델의 속성이 인 경우 각 항목은 Items 아래에 있습니다. 품목에 액세스하려면 어떻게해야합니까?

내 문제는 내가이 결과에서 각 항목의 데이터를 액세스하거나 검색 할 수 없습니다. 서버 측에서 아무것도 변경해서는 안됩니다. 나는이 코드로 백본을 사용하고있다.

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(); 

UPDATE 나는 중첩 된 JSON 객체로 내 문제를 해결할 수 있었다. 이제 모델 속성 또는 내 컬렉션에 개별 항목이 채워집니다. 그러나 여전히 문제는 그것이 작동하지 않으며 내 견해를 나타내지 않는다는 것입니다.

enter image description here이 내가 추가 한 코드는 다음과 같습니다

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

UPDATE

내가 마지막으로 내 질문에 대답! horray! 어떻게 든 내 ItemListview에서 렌더링에 "()"을 넣는 것을 잊어 버렸습니다. 또한 $("#ItemContainer")이 작동하지 않는 것 같아서 $('#ItemContainer)으로 만들었습니다. 이제는 내 모델에서 세부 정보를 표시하고 있습니다.

답변

0

백본은 기본적으로 모든 요청에 ​​대해 JSON을 사용하며 XML을 어떻게 처리해야할지 모르기 때문에 XML을 사용하려면 컬렉션의 sync 메소드를 재정의해야 할 것입니다.

다음은 문제를 해결에 도움이 될해야합니다

http://newcome.wordpress.com/2011/02/20/consuming-xml-web-services-in-backbone-js-using-jath/ 그들은 백본은 기본적으로 사용할 수있는 JSON으로 모델을 변환하는 동기 해석 조작에 제 3 자 라이브러리 XML 파서를 사용합니다.

+0

아니요. 응답은 JSON 형식입니다. 어떻게 든 나는 당신이 이미지가 표시하고있는 것을 만드는 크롬에 플러그인을 추가했지만 응답은 JSON에 있다고 확신합니다. – jongbanaag

+0

동기화를 재정의 할 필요가 없습니다. 가져 오기 및 저장 옵션을 전달해야 XML을 처리 할 수 ​​있습니다. 가져 오기와 예를 들어, 당신은 같은 것을 할 것 : this.model.fetch을 ({ 의 contentType : "응용 프로그램/JSON" dataType와 "XML", processData : 거짓 }); 매력처럼 작동합니다. –

0

응답이 JSON으로 반환되는지 확인하십시오. 백본은 기본적으로 JSON 데이터에서 작동합니다.

+0

JSON 형식입니다. 크롬을 그렇게 만든 플러그인. :) – jongbanaag