Javascript 如何在angularjs中使用三元运算符
我需要根据某些条件返回true或false,我没有获得更干净的代码来执行此操作: 我需要根据此条件隐藏或显示UI上的某些元素,这些元素应返回true或false:Javascript 如何在angularjs中使用三元运算符,javascript,lodash,Javascript,Lodash,我需要根据某些条件返回true或false,我没有获得更干净的代码来执行此操作: 我需要根据此条件隐藏或显示UI上的某些元素,这些元素应返回true或false: scope.isDataEnabled =function(options){ //Here if supppose a comes, // then i need to send true, otherwise false if(!$rootScope.currentPr
scope.isDataEnabled =function(options){ //Here if supppose a comes,
// then i need to send true, otherwise false
if(!$rootScope.currentProduct.id ==
ProductConstants.BB_PRODUCT_ID){
return true;
}
else{
_.map( $rootScope.currentUser.permissions, permissionObj =>{
// permissions is an Array
return (permissionObj.module == "BB_DATASET" &&
permissionObj.values == "b" && options=="a") //need to send true
//if this condition satisfies
});
}
return false; //but i am going mad here, after returning true,
//it comes to this line and sets to false
}
请帮我指引,我应该用什么,来实现它。我想使用三元运算符,但不知道如何在map内部使用它。首先,map函数内部的返回不会将值返回到外部函数,您只是将结果返回到map函数本身。map函数的结果永远不会返回 此外,我认为您可能希望使用
。而不是mapmap
用于转换数据,而some
用于检查某些内容是否符合条件
return _.some($rootScope.currentUser.permissions, permissionObj => {
return (permissionObj.module == "BB_DATASET"
&& permissionObj.values == "b"
&& options=="a")
});
这将检查是否有任何权限与给定条件匹配。或者,如果希望所有内容都与条件匹配,则可以使用。
。首先,map函数的内部返回不会将值返回到外部函数,您只会将结果返回到map函数本身。map函数的结果永远不会返回
return _.some($rootScope.currentUser.permissions, permissionObj => {
return (permissionObj.module == "BB_DATASET"
&& permissionObj.values == "b"
&& options=="a")
});
此外,我认为您可能希望使用。而不是mapmap
用于转换数据,而some
用于检查某些内容是否符合条件
return _.some($rootScope.currentUser.permissions, permissionObj => {
return (permissionObj.module == "BB_DATASET"
&& permissionObj.values == "b"
&& options=="a")
});
这将检查是否有任何权限与给定条件匹配。或者,您可以使用。
如果您希望所有内容都与条件匹配。将代码简化为可操作的最小测试场景(只需使用普通的旧ES20xx)可能会有所帮助。比如:
return _.some($rootScope.currentUser.permissions, permissionObj => {
return (permissionObj.module == "BB_DATASET"
&& permissionObj.values == "b"
&& options=="a")
});
让$rootScope={
当前产品:{
id:`x`
},
当前用户:{
权限:[{
模块:`BB_数据集`,
值:`b`
}, {
模块:`some`,
价值观:`a`
}]
}
};
常量ProductConstants={
BB_产品_ID:`y`
}
log(testMe(`a`));//true(currentProduct.id不是BB\U产品\U id)
ProductConstants.BB_PRODUCT_ID=`x`;
log(testMe(`a`));//真(模块和值和选项)
$rootScope.currentUser.permissions[0]。模块=`AA_DATASET`;
log(testMe(`a`));//false(模块不是BB_数据集)
$rootScope.currentUser.permissions[0]。模块=`BB_DATASET`;
console.log(testMe(`b`));//false(选项不是'a`)
$rootScope.currentUser.permissions[0]。值=`c`;
log(testMe(`a`));//false(值不是'b`)
函数testMe(选项){
if($rootScope.currentProduct.id!==ProductConstants.BB\u PRODUCT\u id){
返回true;
}
const found=$rootScope.currentUser.permissions.find(v=>
v、 模块==`BB_数据集`&&
v、 值==`b`&&
选项==`a`);
返回找到?真:假;
}
。作为控制台包装器{
排名:0;
最大高度:100%!重要;
}
将代码简化为可操作的最小测试场景(只需使用普通的旧ES20xx)可能会有所帮助。比如:
让$rootScope={
当前产品:{
id:`x`
},
当前用户:{
权限:[{
模块:`BB_数据集`,
值:`b`
}, {
模块:`some`,
价值观:`a`
}]
}
};
常量ProductConstants={
BB_产品_ID:`y`
}
log(testMe(`a`));//true(currentProduct.id不是BB\U产品\U id)
ProductConstants.BB_PRODUCT_ID=`x`;
log(testMe(`a`));//真(模块和值和选项)
$rootScope.currentUser.permissions[0]。模块=`AA_DATASET`;
log(testMe(`a`));//false(模块不是BB_数据集)
$rootScope.currentUser.permissions[0]。模块=`BB_DATASET`;
console.log(testMe(`b`));//false(选项不是'a`)
$rootScope.currentUser.permissions[0]。值=`c`;
log(testMe(`a`));//false(值不是'b`)
函数testMe(选项){
if($rootScope.currentProduct.id!==ProductConstants.BB\u PRODUCT\u id){
返回true;
}
const found=$rootScope.currentUser.permissions.find(v=>
v、 模块==`BB_数据集`&&
v、 值==`b`&&
选项==`a`);
返回找到?真:假;
}
。作为控制台包装器{
排名:0;
最大高度:100%!重要;
}$rootScope.currentProduct.id==ProductConstants.BB_PRODUCT_id
应该是$rootScope.currentProduct.id!==ProductConstants.BB_PRODUCT_ID
我想。先试试好吧,我纠正了。。但我的问题还是一样。进入else块后,对于其他值,它将设置为false,但对于值“a”,在设置为true后,它将再次设置为false$rootScope.currentProduct.id==ProductConstants.BB_PRODUCT_id
应该是$rootScope.currentProduct.id!==ProductConstants.BB_PRODUCT_ID
我想。先试试好吧,我纠正了。。但我的问题还是一样。进入else块后,对于其他值,它将设置为false,但对于值“a”,在设置为true后,它将再次设置为false