2013-09-30 159 views
0

我使用require.js的text! plug-in加載我的骨幹項目的JavaScript模板。從模板中調用變量模板

這就是:

<table id="showcart"> 
    <tr><td class="cartitemhead">Item to buy</td><td class="cartitemhead" style="text-align: center;">Quantity</td></tr> 
     <% _.each(item, function(item) { %> 
      <tr><td><table class="verticallist"><tr><td rowspan="4" style="width: 120px;"><img src="<%=item.PictureName%>" alt="Product" width="95px"/></td><td style="font-weight: bold;"><%=trimString(item.Name,50)%></td></tr><tr><td><i>Available in Stock(s)!</i></td></tr><tr><td><i>Rating: 650Va-390w Input: Single</i></td></tr></table></td><td class="centertxt"><%=item.QuantityInCart%></td></tr> 
     <% }); %> 
</table> 

item變量在我看來聲明。

var CartListView = Backbone.View.extend({ 
    render: function(){ 
     var item = deserializeJSONToObj(window.localStorage.getItem("Cart")); 
     var cartList = _.template(showCartTemplate, {}) 
     $("#cartlist").html(cartList); 
    } 
}); 

型號:

define(["underscore" , "backbone"],function(_ , Backbone){ 
    var Cart = Backbone.Model.extend({ 

    }); 
}); 

我從控制檯一個錯誤:Uncaught ReferenceError: item is not defined

任何幫助將不勝感激,謝謝。

回答

1

您需要以某種方式指示您想要傳遞給主幹模板的值。因爲你已經定義了一個變量,Underscore模板正在尋找一個值來替換。

因此,嘗試將模型值作爲參數傳遞給附加視圖。

var CartListView = Backbone.View.extend({ 
    render: function(){ 
     var item = deserializeJSONToObj(window.localStorage.getItem("Cart")); 
     var cartList = _.template(showCartTemplate, {}) 
     $("#cartlist").append({item : cartList}); 
    } 
}); 

這樣,每當undercore找到一個變量item則使用作爲參數傳遞給視圖傳遞的值更換時間。

+0

我試過了,但還是得到了同樣的錯誤。 – titi

+0

Oop!如上所述,傳遞一個模型值?實際上現在我的模型是空的。我應該保持什麼模式? (抱歉,我對骨幹網非常陌生)。 – titi

+0

您是將模型或集合傳遞給骨幹視圖嗎?我的意思是你必須指向骨幹模型或集合才能使用模型的數據。 –

0

您需要通過項目的關鍵在於你在_.template

var CartListView = Backbone.View.extend({ 
    render: function(){ 
     var item = deserializeJSONToObj(window.localStorage.getItem("Cart")); 
     var cartList = _.template(showCartTemplate, {item : item}) 
     $("#cartlist").append({item : cartList}); 
    } 
}); 

通過,因爲你不能在模板直接訪問項目變量中的對象。