2012-04-19 61 views
0

我正在使用通過結合backbone.js和underscore.js創建html位的常規方式。這是我使用的一個例子Backbone.js和underscore.js創建凌亂的html

_.template($('#html-container').html(), this.model.toJSON()); 

而且我在需要的地方追加這個。這種情況下的模型是一個正常的骨幹模型。

現在,這將OUPUTS HTML看起來像這樣:

<li _id="4f82f7c3c5de997ad3fd4989" code="61131" unit="100ml" op="11" rp="22" cp="0" id="4f82f7c3c5de997ad3fd4989"> 

基本上,它在我的模型會爲每個變量HTML屬性。這是正常的還是我在這裏做錯了事。

+0

什麼是你的#html-container外觀喜歡? – sdolan 2012-04-19 23:37:29

+0

只是'<%= code %>'。並且視圖的tagName是'li',所以我想要的只是''不是'

  • 61131
  • ' – 2012-04-19 23:39:58

    回答

    0

    某處你應該有這樣的一條線。

    var sometemplate = _.template($('#html-container').html()); 
    

    ,編譯模板變成一個功能,你可以通過你的模型數據和生成html,像這樣:

    var html = sometemplate(this.model.toJSON()); 
    

    你試圖做這一切在同一行..你 可以做(但不是這種方式),但最好編譯一次模板,保存對某處的引用,稍後再引用它。

    又見http://documentcloud.github.com/underscore/#template

    編輯:現在,我沒有看到,我看到

    如果你正在寫一個一次性的,你可以傳遞數據對象作爲 第二參數傳遞給模板以便立即渲染,而不是返回模板函數 。

    所以沒關係。所以,也許當你的JSONable對象生成時(也就是說,你的對象內有一個對象或某物),你可能包含多個latyer數據,或者...

    +0

    這並不能解決我遇到的問題,只是輕微的優化。無論哪種方式,我都會得到相同的結果。在我的項目中,我使用兩種方式。我在一行中做了這個問題,使問題縮短了一點。 – 2012-04-20 00:00:34

    +0

    是的,我的不好,讓我們看看那個對象看起來像是由'this.model.toJSON()'返回的。 – JayC 2012-04-20 00:03:09

    +0

    這也不是問題。即使我從模型中提取鍵/值對,並僅將它們用作數據對象「{code:...,op:...}」,但仍然會獲得相同的HTML。 – 2012-04-20 00:05:54