Backbone.js:从嵌套视图调用函数的代码不起作用

backbone.js: code for calling function from nested view doesn't work

本文关键字:函数 代码 不起作用 调用 视图 js 嵌套 Backbone      更新时间:2023-09-26

我编写了以下代码,运行时没有错误,但在我按下按钮后,它产生了一个错误:tabClicked未定义

var MainView = Backbone.View.extend({
    initialize: function() {
    },
    tabClicked: function(winID) {
         alert("test");
    }
});
var BottomPanel = MainView.extend( {
    initialize: function() {
        $("body").append($(this.el));
        this.$el.attr("id", "bottomPanel").attr("top", "300px").attr("left", "50px");
        this.$el.append($("<button>").click(this.func1));
    },
    func1: function() {
        tabClicked(0);
    }
});
$(document).ready(function() { 
    var mainView = new MainView();
    var bottomPanel = new BottomPanel();
});

我创建了父窗口"MainView"的子窗口"BottomPanel"。我的意图是从BottomPanel Object调用MainView的一个方法。怎么做呢?

编辑1:我把上面的代码改成了一行:

this.$el.append($("<button>").click(this.tabClicked));

现在它工作了,但我需要保存上下文。现在这个变量当按钮被点击时不指向mainView对象。

应该是this.tabClicked(),否则javascript会查看全局命名空间,其中tabClicked没有定义