這是我的代碼:Backbone.js的「不確定」 get請求
$(function(){
var Slide = Backbone.Model.extend({
defaults: {
castid :1,
id :1
},
urlRoot: function(){
return 'slidecasts/' + this.get("castid") + '/slides/';
},
});
var SlideView = Backbone.View.extend({
el: $("#presentation"),
events: {
'click #next': 'next',
'click #previous': 'previous',
},
initialize: function(){
_.bindAll(this, 'render', 'next');
this.model.bind('change', this.render);
this.render();
},
render: function(){
this.model.fetch();
var variables = {
presentation_name: "This is a Slide-Number: ",
slidenumber: "xxx",
imageurl: this.model.url() +"/"+ this.model.get('imageLinks'),
slide_content: this.model.get("content")};
var template = _.template($("#slide_template").html(), variables);
this.$el.html(template);
return this;
},
next: function(){
console.log(this.model.id);
this.model.nextslide();
},
previous: function(){
console.log("previous function in view");
}
});
testslide = new Slide();
var slideView = new SlideView({model: testslide});
});
這工作正常,但在調試控制檯我總是看到一個GET請求「slidecasts/1 /幻燈片/ 1 /不確定」,這當然失敗了。我不明白我在哪裏觸發了這個獲取請求。
編輯 - 模板代碼
<script type="text/template" id="slide_template">
<label>Presentation <%= presentation_name %> </label> <br/>
<img src="<%= imageurl %>" id="slide_pic" /> <br/>
<textarea id="slide_content">
<%= slide_content %>
</textarea>
<div id="next">next slide </div>
<div id="previous">previous slide </div>
</script>
哇..另一個很好的捕獲。 – fguillen
謝謝。非常好的答案,現在運作。有一件事我不明白:現在如何觸發渲染功能。是通過自動提取調用渲染?我會猜到類似fetch(){success:render()} – Nicolas
@Nicolas:你'this.model.bind('change',this.render);''和'this.model.fetch()'會觸發一個'change'事件並觸發'render'調用。 –