Jquery TypeError:Object [object global]没有方法'search'

时间:2013-06-06 03:48:09

标签: jquery backbone-events

我想让页面加载运行'搜索'功能,但我在self.search(事件)中收到错误消息。 请在那里提供一些帮助,如何在页面加载调用搜索功能?

directory.views.SearchPage = Backbone.View.extend({

templateLoader: directory.utils.templateLoader,

initialize: function() {
    this.template = _.template(this.templateLoader.get('search-page'));
    this.render();
    var keyword = '_firstkey';
    $(document).ready(function (event) {
    self.search(event); //Uncaught TypeError: Object [object global] has no method 'search'##

    })
},

render: function(eventName) {
    $(this.el).html(this.template(this.model.toJSON()));
    this.listView = new directory.views.EmployeeListView({el: $('.scroll', this.el), model: this.model});
    this.listView.render();
    return this;
},

events: {
    "keyup .search-key": "search"
},
 search: function(event) {
    var key = $('.search-key').val();
    this.model.findByName(key);
    return false;
},
});

1 个答案:

答案 0 :(得分:1)

您尚未在self方法中定义initialize变量,您需要创建一个闭包变量,如var self = this;

directory.views.SearchPage = Backbone.View.extend({

    templateLoader: directory.utils.templateLoader,

    initialize: function() {
        this.template = _.template(this.templateLoader.get('search-page'));
        this.render();
        var keyword = '_firstkey';
        var self = this; //add self variable here
        $(document).ready(function (event) {
            self.search(event); //Uncaught TypeError: Object [object global] has no method 'search'##

        })
    },

    render: function(eventName) {
        $(this.el).html(this.template(this.model.toJSON()));
        this.listView = new directory.views.EmployeeListView({el: $('.scroll', this.el), model: this.model});
        this.listView.render();
        return this;
    },

    events: {
        "keyup .search-key": "search"
    },
    search: function(event) {
        var key = $('.search-key').val();
        this.model.findByName(key);
        return false;
    }
});