Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript backbone.js:从嵌套视图调用函数的代码不';行不通_Javascript_Backbone.js - Fatal编程技术网

Javascript backbone.js:从嵌套视图调用函数的代码不';行不通

Javascript backbone.js:从嵌套视图调用函数的代码不';行不通,javascript,backbone.js,Javascript,Backbone.js,我编写了以下代码,运行时没有错误,但在我按下按钮后,它会出错:tabClicked未定义 var MainView = Backbone.View.extend({ initialize: function() { }, tabClicked: function(winID) { alert("test"); } }); var BottomPanel = MainView.extend( { initialize: functio

我编写了以下代码,运行时没有错误,但在我按下按钮后,它会出错: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();
});
var MainView=Backbone.View.extend({
初始化:函数(){
},
选项卡:函数(winID){
警报(“测试”);
}
});
var BottomPanel=MainView.extend({
初始化:函数(){
$(“body”).append($(this.el));
这个.$el.attr(“id”,“底部面板”).attr(“顶部”,“300px”).attr(“左侧”,“50px”);
this.el.append($(“”)。单击(this.func1));
},
func1:函数(){
tab(0);
}
});
$(文档).ready(函数(){
var mainView=new mainView();
var bottomPanel=新的bottomPanel();
});
我制作了父窗口“MainView”的子窗口“底部面板”。 我的意图是从BottomPanel对象调用MainView的一个方法。 怎么做

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

this.$el.append($("<button>").click(this.tabClicked));
this.el.append($(“”)。单击(this.tabClicked));

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

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

否,我尝试过,但单击按钮后显示另一个错误:未捕获类型错误:object#没有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();
});