2013-06-05 102 views
1

但我尝试这是行不通的,什么是directory.views.SearchPage? 我可以像上面那样调用这个函数吗? 感谢您的分享!jquery骨干查看侧呼

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

templateLoader: directory.utils.templateLoader, 
EmployeeListView: directory.views.EmployeeListView, 

initialize: function() { 
    this.template = _.template(this.templateLoader.get('search-page')); 
}, 

render: function(eventName) { 
    $(this.el).html(this.template(this.model.toJSON())); 
    this.listView = new directory.views.EmployeeListView({el: $('ul', this.el), model:this.model}); 
    this.listView.render(); 
    //var thiskey = ' '; 
    //this.model.findByName(); 
    //alert("HELLO WORLD!1"); 
    return this; 
}, 
events: { 
    "keyup .search-key": "search" 
}, 
// Start the search function 
search: function(event) { 
    var key = $('.search-key').val(); 
    this.model.findByName(key); 
} 
}); 

我尝试学习jQuery的,但我得到了一些被困在这儿了......请进行以下一些帮助:

下面我有骨干的搜索查看,我想页面加载运行这个搜索查看,我的代码一个事件页面“就绪”和“加载”,但页面加载时没有触发...

我有一个问题如何使页面加载运行此功能?或者如何在外部函数中调用这个SearchView主干?

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", 
     "keyup": "doSearch", 
     "load": "doSearch", 
    "ready": "doSearch" 
    }, 
    doSearch: function(event){ 
     // Button clicked, you can access the element that was clicked with event.currentTarget 
     alert("Search for " + $("#search_input").val()); 
    } 
}); 

var search_view = new SearchView({ el: $("#search_container") }); 

回答

1

你会想要这样做,在页面加载后实例化你的视图。

var search_view ; 

// jQuery loads yoru view on document ready 
$(function() { 
    search_view = new SearchView({ el: $("#search_container") }); 
}); 

如果你想从外部调用doSearch功能,您只需neeed做到这一点:

search_view.doSearch(); 

假设你想在页面加载执行doSearch,您可能希望将其添加到初始化方法this.render();致电

+0

欢迎您,如果它适合您,您是否介意我的答案并接受它作为正确答案?谢谢:) – dcarson

+0

感谢dcarson,但我仍然有另一种类型的问题,请你再帮忙吗?请参阅上面的问题,我在那里添加一些示例代码。 – hungfei

+0

也许你应该编辑你的文章并在一个新的问题中单独提出第二个问题?他们是两个不同的问题。 – dcarson