这个。$ el.off不是一个函数

时间:2016-10-22 03:01:44

标签: javascript jquery backbone.js

以前这可行,但我将下划线和主干更新到最新版本,然后我收到错误

Uncaught TypeError: this.$el.off is not a function

http://jsfiddle.net/mmm770v8/

  SearchView = Backbone.View.extend({
        initialize: function(){
            this.render();
        },
        render: function(){
            var template = _.template( $("#search_template").html(), {} );
            this.el.html( template );
        },
        events: {
            "click input[type=button]": "doSearch"  
        },
        doSearch: function(){
            // Button clicked
            console.log(this.el.find('#search_input').val()); 
        }
    });

1 个答案:

答案 0 :(得分:4)

你有几个问题:

  1. 您的小提琴使用的是古老的jQuery 1.5.2,并使用import / bind代替unbind / on。 Backbone期望更新版本的jQuery具有offon功能。

  2. 您使用this.el表示this.$eloff只是一个普通的旧DOM节点,this.el是缓存的this.$el

  3. $(this.el)形式的var html = _.template(tmpl, data) went away in Underscore 1.7.0。您现在需要一个两步过程:

    _.template

    所以你的var t = _.template(tmpl); var h = t(data); 应该更像这样:

    render
  4. 更新了小提琴:http://jsfiddle.net/ambiguous/L5z4agh4/