View不在Backbone.js中呈现

时间:2013-04-21 10:04:46

标签: backbone.js rendering backbone-views

我正在尝试在我的网页上呈现搜索框。我试图将它保持在单独的视野中。没有这个boxview的页面工作正常但是一旦我初始化我的BoxView我得到与下划线相关的错误。

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>

编辑: 删除了拼写错误

1 个答案:

答案 0 :(得分:0)

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

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

应该是:

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

修改
我通常认为这是在写这个问题时犯的错误,但是你的错误表明问题来自一个下划线调用(你只有一个),并且它试图在一个对象上使用replace_.template肯定会使用replace并为您提供一个对象($('#search-box'))。所以这很有道理。