我有一个非常基本的问题,但是找不到任何类似的问题。我有以下代码:
var admin_li = helper.h('li', [fpu_link('/admin', 'control', false)]);
if (Discourse.User.current().admin) {
menu_li.push(admin_li);
}
在DevTools中出现以下错误:
Uncaught TypeError: Cannot read property 'admin' of null
如何在Discourse.User.current()
语句中检查admin
是否具有if
的属性/方法?
答案 0 :(得分:1)
与此类似的方法应该对您有用:
var admin_li = helper.h('li', [fpu_link('/admin', 'control', false)]);
// Get current from user and store in local variable
var currentUser = Discourse.User.current();
if(currentUser !== null && currentUser !== undefined) {
// If currentUser not null and not undefined then it's safe to access
// the admin field
if (currentUser.admin) {
menu_li.push(admin_li);
}
}
或者(如@MarkMeyer所建议),上面的代码可以用更简洁的速记形式编写,如下所示:
if(currentUser && currentUser.admin) {
// If currentUser is "truthy" (not null, not undefined, etc), and
// currentUser.admin is "truthy", then update menu_li list
menu_li.push(admin_li);
}
请参见JavaScript中的this more information on the definition of "truthy"(和"falsey")值