2013-06-06 2 views
0

'검색'기능을 실행하는 페이지를로드하려고하지만 self.search (이벤트)에 오류 메시지가 표시됩니다. 몇 가지 도움말을 작성하십시오. 어떻게 페이지를로드하여 검색 기능을 호출 할 수 있습니까? 당신은 initialize 방법 내부 self 변수를 정의하지 않은Jquery TypeError : Object [object global] '검색'메서드가 없습니다

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

, 당신은 오류 메시지가 "그런 방법은없는 이유를 알려하는 것이 유용 할 수 있습니다 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; 
    } 
}); 
+0

같은 폐쇄 변수를 작성해야 "ReferenceError 또는"undefined is not object "가 아닌" –

+0

@muistooshort 여기서'self'는'window' (전역 개체)를 가리키는 것 같습니다. 크롬에서는 적어도 "self"가 세계 공간에 존재합니다 –

+1

https://developer.mozilla.org/en-US/docs/Web/API/window.self (이것이 왜 편집증 환자가 '자기'를 사용하지 않는가? 이 목적을 위해,'_this'와'that'이 더 나은 선택입니다.) –

관련 문제