![](/img/trans.png)
[英]uncaught TypeError: Cannot call method 'replace' of undefined backbone.js
[英]Uncaught TypeError: Cannot call method 'replace' of undefined underscore.js
我是backbone.js
和underscore.js
新手。
HTML:
<div id="cartlist">
<script type="text/template" id="cart_template">
</script>
</div>
我在哪里調用了視圖文件:
<script type="text/javascript" src="webcore/views/CartView.js"></script>
</body>
JS函數(它適用於javascript項目):
function Cart(){
......
this.showCart = function (){
var item = deserializeJSONToObj(window.localStorage.getItem(Cart.storageName));
var str = '<table id="showcart">';
str += '<tr><td class="cartitemhead">Item to buy</td><td class="cartitemhead" style="text-align: center;">Quantity</td></tr>';
$.each(item, function(i, item) {
str += '<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>';
});
str += '</table>';
return str;
}
這是視圖:
var myCart = new Cart();
CartList = Backbone.View.extend({
initialize:function(){
this.render();
},
render: function(){
var template = _.template( $("#cart_template").html(), {} );
this.$el.html( template );
}
});
var cart_view = new CartList({ el: $("#cartlist").html(myCart.showCart()) });
當我試圖調用視圖模板時,我收到錯誤Uncaught TypeError: Cannot call method 'replace' of undefined - underscore.js
。 請幫我找錯。
如何將Cart
類中的str
字符串轉換為underscore.js
template
。
非常感謝任何幫助,謝謝。
我猜你的問題是你在DOM中存儲#cart_template
的地方:
<div id="cartlist">
<script type="text/template" id="cart_template">
</script>
</div>
您可以像這樣創建CartList
:
var cart_view = new CartList({ el: $("#cartlist").html(myCart.showCart()) });
當你這樣說:
$("#cartlist").html(myCart.showCart())
#cartlist
所有內容都消失了,特別是#cart_template
消失了。 然后在CartList
,你嘗試這樣做:
_.template( $("#cart_template").html(), {} );
但是那時候沒有#cart_template
所以$('#cart_template').html()
是undefined
,這就是你的錯誤來自: _.template
將在內部調用replace
但是你將它undefined
為undefined
的模板而不是一串。
該解決方案是將您的#cart_template
外#cartlist
。
我也建議您不要通過el
到視圖的構造函數,您認為應該建立自己的el
,主叫方應把該el
它希望在DOM。 這樣,視圖對其元素負全部責任,並且您將擁有更少的僵屍和事件問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.