javascript - 将自定义监听器绑定(bind)到 Backbone View

标签 javascript backbone.js

我是 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/

相关文章:

javascript - 在 ng-repeat、Angular 中使用单选按钮

backbone.js 获取更改事件在成功获取后未触发

javascript - 无论如何,是否可以在 Backbone 中绑定(bind)具有 "if"依赖性的事件?

backbone.js - 使用 backbone.marionette 获取 "NoTemplateError: Could not find template"

javascript - 使用 Backbone.js 访问 JSON 响应的部分内容

javascript - 使用ajax获取通过FTP上传的文件的文件大小 - 试图防止ajax中断自身

javascript - 如何在按钮单击时隐藏和播放音频标签

javascript - 如何在 Handlebars 中动态设置属性名称

javascript - 循环遍历每次迭代并将其保存到数组中

javascript - “body”未定义,具体取决于脚本标签的位置