首页 > 解决方案 > 如何将函数传递给主干子视图

问题描述

用户选择视图是许多不同视图的共享子视图。问题是当用户被点击时,每个父视图都需要发生不同的事件。例如:

有没有办法将处理程序传递给子视图?下面的代码传递了处理程序,但它在子视图初始化时立即执行。

ProjectManager.Views.BoardTask = Backbone.View.extend({

    ...

    toggleSelectUser: function () {
        let self = this;
        let userSelectionView = new ProjectManager.Views.UserSelection({
            collection: self.collection,
            attributes: {
                onResultClick: self.updateUser
            }
         });

         $(".main-container").append(userSelectionView.render().$el);
         userSelectionView.position(self.$(".board-task-user-picture"));
    },

    updateUser: function (user) {
        // Update the assigned user of the board task
    },

    ...
});

标签: javascriptjquerybackbone.js

解决方案


将函数绑定到父视图,然后在选项中将其传递给子视图似乎可以解决这个问题。

let self = this;
let userSelectionView = new ProjectManager.Views.UserSelection({
    collection: self.collection,
    onResultClick: self.updateUser.bind(self)
});

推荐阅读