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
是一个有效的变量名..?这与我的问题无关。这是一个语法错误,您提供的所有代码都无效。这就是我到目前为止所做的,听起来你有一些到目前为止有效的东西,我们可以一起工作。因此,除非我们要解决所有这些问题(换句话说,从头开始创建你的应用程序
),否则这与问题有关。。。