Javascript 如何使用主干';s触发法

Javascript 如何使用主干';s触发法,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,我有一个主干应用程序,用户和管理员可以在其中登录和注销。现在管理员有多个选项在不同的页面上添加功能,因此,我有一个管理员菜单,它应该只显示相关页面上的相关按钮。我想使用触发器-方法,但无法使其正常工作。比如说,管理员应该有可能在frontpage上更改某些内容,因此特定的按钮应该是可见的,只有在导航到frontpage时才会打开。这就是我目前所做的: Router.js: routes: { '': 'index', 'home': 'home' } home: functio

我有一个主干应用程序,用户和管理员可以在其中登录和注销。现在管理员有多个选项在不同的页面上添加功能,因此,我有一个管理员菜单,它应该只显示相关页面上的相关按钮。我想使用
触发器
-方法,但无法使其正常工作。比如说,管理员应该有可能在frontpage上更改某些内容,因此特定的按钮应该是可见的,只有在导航到frontpage时才会打开。这就是我目前所做的:

Router.js:

routes: {
    '': 'index',
    'home': 'home'
}

home: function(){
  App.trigger('showFrontBtn');
}
然后在我的Admin-MenuView.js上:

Admin-Menu.View = Backbone.View.extend({
    tagName: 'div',
    template: 'adminMneu',
    initialize: function() {
        this.render();
        App.on('showFrontBtn', this.changeFront, this);             
    },

    changeFront:function(user){
        alert('works!')
        if(user && user.role === 'admin'){
            $('.frontBtn').show();
        } else {
            $('.frontBtn').hide();
        }
    },

问题是,它实际上返回了
警报('works')
,因此我假设if语句一定有问题,但是我是否正确地使用了该方法?

函数
changeFront:function(user)
希望传入一个“user”对象。但在触发事件时,没有指定要传递的参数(用户)

我猜当您试图访问“user.role”时,它抛出了一个异常,因为user为null,而您正试图访问null.role

您可能会将事件侦听器的第三个参数与函数的参数混淆。app.on的第三个参数实际上是上下文,而不是参数。参数需要由触发器传递。所以你可以做一些像

home: function(){
  App.trigger('showFrontBtn', {role: "Admin"});
}

“问题是,我真的变成了警觉”-你变成了什么<代码>警报('works')-我将修改文本
管理菜单。View
是一个有效的变量名..?这与我的问题无关。这是一个语法错误,您提供的所有代码都无效。这就是我到目前为止所做的,听起来你有一些到目前为止有效的东西,我们可以一起工作。因此,除非我们要解决所有这些问题(换句话说,从头开始创建你的
应用程序
),否则这与问题有关。。。