0

我正在尝试在我的页面上呈现一个搜索框。我试图把它放在一个单独的视图中。没有此 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>

编辑:删除了拼写错误

4

1 回答 1

0

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

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

应该:

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

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

于 2013-04-21T10:38:13.517 回答