Backbone.js:记录视图实例只返回el属性

Backbone.js:记录视图实例只返回el属性,backbone.js,Backbone.js,我有一个按钮和一张表格。最初,在初始化AddMenuForm视图时隐藏该表单 我为AddMenuButton注册了一个事件,这样当单击按钮时,它将取消隐藏表单 但是,代码addMenuForm.$el.show()不起作用。当我尝试控制台记录addMenuForm时,我得到的是addMenuForm的el属性,而不是addMenuForm实例 new App; var App = Backbone.View.extend({ initialize: function() {

我有一个按钮和一张表格。最初,在初始化AddMenuForm视图时隐藏该表单

我为AddMenuButton注册了一个事件,这样当单击按钮时,它将取消隐藏表单

但是,代码addMenuForm.$el.show()不起作用。当我尝试控制台记录addMenuForm时,我得到的是addMenuForm的el属性,而不是addMenuForm实例

new App;
var App = Backbone.View.extend({
    initialize: function() {
         var addMenuButton = new AddMenuButton;
         var addMenuForm = new AddMenuForm;
    }
});

var AddMenuButton = Backbone.View.extend({
    el: '#addMenuButton',

    events: {
        'click': 'click'
    },

    click: function(e) {
        e.preventDefault();
        console.log(addMenuForm);
        addMenuForm.$el.show();
    }
});

var AddMenuForm = Backbone.View.extend({
    el: '#addMenuForm',

    initialize: function() {
        this.$el.hide(); // hide the form
    }
})

我做了类似的事情,它正常工作

<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Backbone.js</title>
  <script src="jquery-1.8.1.min.js"></script>
   <script src="underscore.js"></script>
  <script src="backbone.js"></script>

</head>

<body>
<div class="demo">
<form method ="get" id="addMenuForm" >
<input type="text" value="test"/>
<input type="button" name="button" value="Check it out!"  />
</form>
<input type="button" name="button" value="show form" id="addMenuButton" />
</div>
<script>

var App = Backbone.View.extend({
    el : "demo",
    initialize: function() {
        addMenuForm = new AddMenuForm();
        addMenuButton = new AddMenuButton({addMenuForm: addMenuForm});

    }
});

var AddMenuButton = Backbone.View.extend({
    el : '#addMenuButton',

    initialize: function(options) {
        this.addMenuForm = options.addMenuForm;
    },

    events: {
        'click': 'click'
    },

    click: function(e) {
        e.preventDefault();
        console.log(addMenuForm);
        addMenuForm.$el.show();
    }
});

var AddMenuForm = Backbone.View.extend({ 
    el : '#addMenuForm',

    initialize: function() {
        this.$el.hide(); // hide the form
    }
});
var  myApp = new App();

</script>


</body>
</html>

Backbone.js
var App=Backbone.View.extend({
el:“演示”,
初始化:函数(){
addMenuForm=新的addMenuForm();
addMenuButton=新的addMenuButton({addMenuForm:addMenuForm});
}
});
var AddMenuButton=Backbone.View.extend({
el:'添加菜单按钮',
初始化:函数(选项){
this.addMenuForm=options.addMenuForm;
},
活动:{
“单击”:“单击”
},
点击:功能(e){
e、 预防默认值();
console.log(addMenuForm);
addMenuForm.$el.show();
}
});
var AddMenuForm=Backbone.View.extend({
el:“#addMenuForm”,
初始化:函数(){
this.$el.hide();//隐藏窗体
}
});
var myApp=new App();

这里的问题是范围。您的
AddMenuButton
类不知道
addMenuForm
实例,因为此实例是在
App
的初始化方法中创建的

例如,您可以取出
addMenuForm
的实例化,并在AddMenuButton的initialize方法中执行此操作

var AddMenuButton = Backbone.View.extend({
    el: '#addMenuButton',

    initialize: function () {
       this.addMenuForm = new AddMenuForm
    },

    events: {
        'click': 'click'
    },

    click: function(e) {
        e.preventDefault();
        console.log(this.addMenuForm);
        this.addMenuForm.$el.show();
    }
});

我没有试过,但应该是这样的

我想,在javascriptI中使用
var
不可靠的方式,我假设?这是一个打字错误。无论如何,我试过你的代码,但现在它甚至没有注册我的点击事件。?表示如果(选项)大于…则无任何事情发生。我试图编写一个额外的
console.log('test')
,以确保得到相同的结果。@UlugbekKomilovich console.log(addMenuForm);需要是console.log(this.addMenuForm);