2014-02-15 59 views
0

當我創建一個視圖對象,就像這樣:Backbone.js中聲明的變量視圖的渲染方法似乎不存在?

app.MyCollectionView = Backbone.View.extend({ 
    el: "#my-element", 
    template: _.template($(#my-view-template).html()), 

    render: function(){ 
    this.$el.append(this.template({ 
     "myTemplateVar": this.html_string 
    })); 
    var html_string = "<p>Some stuff here</p>"; 
    } 
}); 

變量「html_string」不生效。該視圖將以空的「myTemplateVar」呈現。但是,如果我聲明「html_string」作爲視圖參數,一切工作正常。上面的代碼有什麼問題?

回答

2

固定碼:

app.MyCollectionView = Backbone.View.extend({ 
    el: "#my-element", 
    template: _.template($('#my-view-template').html()), 

    render: function(){ 
     var html_string = "<p>Some stuff here</p>"; 

     this.$el.append(this.template({ 
      "myTemplateVar": html_string 
     })); 
    } 
}); 
  1. 你必須在設定的模板方法選擇參數錯誤
  2. 你應該聲明變量,並設置它的值之前將它傳遞給對象
  3. Yon必須調用變量而不需要this.

簡短說明

this.$el.append(this.template({ 
    "myTemplateVar": this.html_string 
})); 

在這段代碼thisthis.html_string指的是你傳遞給this.template方法的對象。

2

當函數被調用時,this被設置爲視圖。您的html_string變量是渲染函數的屬性,而不是視圖。