我不得不代码:Backbone.js的不渲染JSON -
window.TicketCollection = Backbone.Collection.extend({
model:Tickets,
url:"/index.php/tickets/viewJSON"
});
window.TicketsView = Backbone.View.extend({
tagName:'div',
initialize: function() {
this.model.bind("reset", this.render, this);
},
render:function(eventName){
_.each(this.model.models, function(ticket){
$(this.el).append(new TicketListItemView({model:ticket}).render().el);
},this);
return this;
}
});
window.TicketListView = Backbone.View.extend({
tagName: "li",
template:_.template($('#tickets-list-item').html()),
render:function (eventName){
$(this.el).html(this.template(this.model.toJSON));
return this;
}
});
var AppRouter = Backbone.Router.extend({
routes:{
"":"list"
},
list:function(){
window.alert("alright");
this.ticketList = new TicketCollection();
this.ticketLists = this.ticketList.get();
this.ticketListView = new TicketListView({model:this.ticketList});
$("#ticketListHolder").html(this.ticketListView.render().el);
},
});
var app = new AppRouter();
Backbone.history.start();
});
我的PHP如下:
<?php header('Content-type: application/json');
echo json_encode(array("ticketID"=>"test", "ticketName"=>"1"));?>
从PHP的反应是:
[{"ticketID":"1","ticketName":"Fix the admin system"}]
HTML :
<div id="ticketListHolder">
#
</div>
<script type="text/template" id="tickets-list-item">
<div class="supTicket ticketHolder nobg">
<div class="issueType">
<span class="issueInfo"><%= ticketName %></span>
<span class="issueNum">[ #<%= ticketID %>] - <%= fullName %></span>
</div>
</div>
</script>
我得到的错误:Uncaught ReferenceError: ticketName is not defined
,它似乎不是解析json,而是将它读为一个字符串块。为什么这个错误发生,当我的JSON返回正确的数据。
你的假设在哪里_“看起来它不是解析json,而是将它作为一个字符串块”_基于?“读取。我认为你需要调试一下,看看系统的状态不是预期的第一点,几个'console.log'在这里和那里可以帮助你。例如,_how的'ticket'看起来像这个块'_.each(this.model.models,function(ticket){..}'?_。并且检查你的_JS console_来检查_AJAX调用的_responses_。 – fguillen 2012-07-31 14:46:48
AJAX调用响应良好,一个'控制台。log' on this.ticketList.fetch()'(参见@ nikoshr的答案)返回'responseText:“{”ticketID“:”test“,”ticketName“:”1“}'' – rickyduck 2012-07-31 14:50:36
'ticket'看起来像什么样到这个块'_.each(this.model.models,function(ticket){..}'?我想看看'ticket'引用是我们期望的,并且它的_attributes_被正确填充。 – fguillen 2012-07-31 14:54:48