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

时间:2013-06-01 20:02:32

标签: javascript backbone.js

我已经制作了以下代码,它运行时没有错误,但是在按下按钮后,它出错了: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对象调用MainView方法。 怎么做?

编辑1: 我在一行中更改了上面的代码:

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

现在它可以工作,但我需要保存上下文。现在变量在单击按钮时不指向mainView对象。

1 个答案:

答案 0 :(得分:2)

应该是this.tabClicked()否则javascript会查看未定义tabClicked的全局命名空间。