视图和控制器之间的骨干事件

时间:2015-05-30 15:49:49

标签: javascript backbone.js

我正在尝试在模型 - 视图 - 控制器模式中使用Backbone事件。我的控制器只是一个JavaScript类,所以我像这样扩展它以支持Backbone事件:

function Controller() {
    _.extend(this, Backbone.Events);

    this.listenTo(view, 'some:event', this.onSomeEvent);

    this.onSomeEvent = function() {
        // ... This code never executes.
    }
}

我的视图是一个Backbone视图,当单击一个按钮时会执行此操作:

onClick: function() {
    this.trigger('some:event');
}

onClick()方法响应按钮单击而执行,但控制器的onSomeEvent()方法永远不会执行。我做错了什么?

2 个答案:

答案 0 :(得分:1)

应在致电this.onSomeEvent之前定义

this.listenTo。现在,this.onSomeEvent在被指定为监听器时未定义。

你也可以像这样定义你的控制器

function Controller() {
    _.extend(this, Backbone.Events);

    this.listenTo(view, 'some:event', this.onSomeEvent);
}

Controller.prototype.onSomeEvent = function() {
    // code
};

并按照new Controller()

调用控制器

答案 1 :(得分:-1)

控制器

 this.listenTo(currentView, 'AdminMenu:click', function (data) {...})

查看

  return {
        index: Marionette.ItemView.extend({
            template:file,
            events: {
                'click .admin-menu-ref': 'goToMenuItem'
            },
            goToMenuItem: function (e) {
                e.preventDefault();
                this.trigger('AdminMenu:click', {
                    target: e.currentTarget
                });
            }
        })
    }