2013-04-21 86 views
0

我试图在我的页面上呈现搜索框。我试图保持在一个单独的观点。没有这个boxview的页面正常工作,但只要我初始化我的BoxView我得到与下划线相关的错误。视图不在Backbone.js中渲染

Uncaught TypeError: Object [object Object] has no method 'replace' underscore-min.js:29 

这是我的看法

/* Views */ 

var BoxView = Backbone.View.extend({ 
    el: '.head', 
    initialize: function() { 
     this.render(); 
    }, 
    render : function(){ 
     var that = this; 
     var template = _.template($('#search-box').html()); 
     that.$el.html(template); 
    } 
}); 

    var boxview = new BoxView(); 

模板

<script type="text/template" id="search-box"> 
<form class="navbar-search pull-right" id="search"> 
<input class="search-query" name="searchText" type="text" id="searchText" placeholder="Search books"/> 
<button type="submit" class="btn">Submit</button> 
</form> 
</script> 

编辑: 删除了错字错误

+0

可能重复的[Underscore.js模板问题 - 无法调用方法'替换'null](http://stackoverflow.com/questions/11001419/underscore-js-template-issue-cannot-call-method-replace -of-null) – 2013-04-21 16:20:27

+0

你在_ _template($('#search-box')之前调用'_.template(null)'某处,检查$('#search-box')中的内容。 html的())'。 – 2013-04-21 16:21:25

回答

0

在我看来,这只是一个错字:

var template = _.template($('#search-box')).html(); 

应该是:

var template = _.template($('#search-box').html()); 

编辑:
我通常认为这是种在写这个问题作出错字,但你的错误提示的问题来自于一个下划线通话(你只有一个),并且它试图在对象上使用replace_.template肯定使用replace,你给它一个对象($('#search-box'))。所以这是有道理的。

+0

我从问题中删除了错字。同样的错误仍然 – Abhishek 2013-04-21 10:49:55

+0

@Ahishek你确定你没有在你的代码中的错字吗? http://jsfiddle.net/5bYHF/工作正常。 – Loamhoof 2013-04-21 11:54:59

+0

是的,代码中没有错别字。实际上有两种观点。随着他们两个到位我得到错误。一旦我删除这个,它工作正常 – Abhishek 2013-04-21 14:19:25