2012-10-06 49 views
1

我試圖在骨幹視圖中顯示灰塵模板(編譯)。如何渲染帶骨架的灰塵模板

這裏是認爲我的渲染功能:

render: -> 
    dust.render("customer-item", @model.toJSON(), (err, output) -> 
    throw err if err 
    $(@el).html output 
) 
    @ 

當我帶領的觀點我看到2周的div我的容器內加入(對應的應裝載的2款),但它們都是空的。個別模板不redered ...... 當我調試「輸出」變量i看到模板所以理論上它應該被正確加載中...

當我做一個簡單的測試我可以看到一個輸出爲:

render: -> 
     $(@el).html "<span>TEST</span>" 
     @ 

但對於場景我沒有輸出

render: -> 
     dust.render("customer-item", @model.toJSON(), (err, output) -> 
     $(@el).html "<span>TEST</span>" 
    ) 
     @ 

非常感謝您的幫助。

回答

2

我沒用過灰塵那麼多,但對於什麼,我記得你應該先編譯模板一樣,(在普通的JavaScript):

var source = $("#some-template").html(); 
var compiled = dust.compile(source,"table"); 

dust.loadSource(compiled); 

dust.render("table",this.model.toJSON(),function(err,out){ 
    $(el).html(out); 
}); 

編輯:

我想我找到問題在於:當您在dust.render函數中調用$(this.el).html(out)時,this不在上下文中。所以你必須改變你的渲染功能,像這樣的:

var self = this; 
dust.render("table",this.model.toJSON(),function(err,out){ 
    $(self.el).html(out); 
}); 
+0

嗨,謝謝你的回答。我忘了提及我的模板已經在服務器端編譯了。我使用node.js和duster.js一樣在這個博客上解釋:http://dmix.ca/2011/12/dustjs-backbonejs-dusterjs/。如果我在客戶端編譯模板,我將失去dustjs的所有潛力。任何想法,歡迎... – Michael

+0

對不起,但我不知道你的方法很多......如果你調試輸出變量你看到了什麼?模板是用你的模型數據編譯還是僅僅是一個原始模板? – Ingro

+0

我使用模型的數據查看模板。發生什麼我不知道...我看到2個div注入但內部沒有。也許我的el元素不正確,但我怎麼知道這一點? – Michael

1

正如@Ingro解釋這是一個問題,這(@)上下文。

一種選擇是指定這給本地變量(如「自」或「該」)

render: -> 
    self = @ 
    dust.render("customer-item", @model.toJSON(), (err, output) -> 
    throw err if err 
    self.$el.html output 
) 
    @ 

另一種選擇是使用的CoffeeScript的「=>」(脂肪箭頭)

render: -> 
    dust.render("customer-item", @model.toJSON(), (err, output) => 
    throw err if err 
    @$el.html output 
) 
    @