我是 javascript 和 Backbone.js 的新手。我想在初始化时将自定义监听器绑定(bind)到 Backbone View 。例如,我想实现这样的目标:
var CampaignListView = Backbone.View.extend({
initialize: function(){
this.on("customFunc")
},
customFunc: function() {
if (this.$el.scrollTop() == 500 ) {
console.log("this has occurred, time to do stuff")
}
}
)}
每当用户滚动到指定位置时,我就可以执行一些代码。
谢谢。
最佳答案
我假设这是您希望在窗口滚动时发生的事情,不是吗?在这种情况下,您有几个选择:
第一个是更熟悉的东西,并且接近您所拥有的,使用 remove
方法来清理该绑定(bind):
var CampaignListView = Backbone.View.extend({
initialize: function(){
// You probably want to add an identifier to the event name, like 'scroll.campainlist' or something
$(window).on('scroll', _.bind(this.customFunc, this));
},
customFunc: function() {
if (this.$el.scrollTop() == 500 ) {
console.log("this has occurred, time to do stuff")
}
},
remove: function() {
$(window).off('scroll');
Backbone.View.prototype.remove.call(this);
}
)}
<小时/>
另一个选项是使用 Event Aggregator像这样:
var vent = _.extend({}, Backbone.Events);
$(window).on('scroll', function(ev) {
vent.trigger('window:scroll', ev);
});
var CampaignListView = Backbone.View.extend({
initialize: function(){
this.listenTo(vent, 'window:scroll', this.customFunc);
},
customFunc: function() {
if (this.$el.scrollTop() == 500 ) {
console.log("this has occurred, time to do stuff")
}
}
)}
关于javascript - 将自定义监听器绑定(bind)到 Backbone View,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24066110/