Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么是「;棱角;执行条件ng if检查的方法?_Javascript_Html_Angularjs - Fatal编程技术网

Javascript 什么是「;棱角;执行条件ng if检查的方法?

Javascript 什么是「;棱角;执行条件ng if检查的方法?,javascript,html,angularjs,Javascript,Html,Angularjs,假设我有一个包含“HOMEPAGE”值的字符串 我想在一个div中执行一个ng if,如果vm.string等于这五个字符串中的一个,就会显示它 "HOMEPAGE" "ABOUT" "STORE" "EXAMPLE" "SOMETHING" 我可以在ng内部使用or运算符来实现此操作,以达到预期效果 <div ng-if="WhateverController.string == 'HOMEPAGE' || WhateverController.string == 'ABOUT

假设我有一个包含“HOMEPAGE”值的字符串

我想在一个div中执行一个ng if,如果vm.string等于这五个字符串中的一个,就会显示它

"HOMEPAGE"
"ABOUT"
"STORE"
"EXAMPLE"
"SOMETHING"
我可以在ng内部使用or运算符来实现此操作,以达到预期效果

<div ng-if="WhateverController.string == 'HOMEPAGE'
    || WhateverController.string == 'ABOUT'
    || WhateverController.string == 'STORE'
    || WhateverController.string == 'EXAMPLE'
    || WhateverController.string == 'SOMETHING'">

This will display because the string is 'HOMEPAGE'

</div>

这将显示,因为字符串为“主页”
我也可以通过在控制器中创建一个返回布尔值的函数来实现这一点

vm.isTrue = function () {

    return (vm.string == 'HOMEPAGE'
        || vm.string == 'ABOUT'
        || vm.string == 'STORE'
        || vm.string == 'EXAMPLE'
        || vm.string == 'SOMETHING');

};

<div ng-if="WhateverController.isTrue">
This will display because the string is 'HOMEPAGE'
</div>
vm.isTrue=函数(){
返回(vm.string=='HOMEPAGE'
||vm.string==“关于”
||vm.string=='STORE'
||vm.string==“示例”
||vm.string=='SOMETHING');
};
这将显示,因为字符串为“主页”

我的问题是,这两种方法中哪一种被认为是更“有角度”的方法?我倾向于在javascript内部执行此检查,因为它使HTML看起来更干净,但我很好奇是否有一种方法优于另一种方法,以及为什么。

如果您只在代码的一个位置使用此检查,我会说,除了希望HTML看起来更干净之外,这并不重要。这只是偏好的问题


另一方面,如果要在代码中多次检查该条件,使用函数会更好。

我认为第二个更好。这甚至不是一种棱角分明的方式,而是一种编写干净代码的方式

您还应该避免编写很长的逻辑条件,而是将其拆分为多个变量。例如:

vm.age > 5 && vm.age < 100 && vm.name.length > 5 && (vm.location == "Spain" || vm.location == 'England')
vm.age>5&&vm.age<100&&vm.name.length>5&&(vm.location==“西班牙”| | vm.location==“英格兰”)
您应改为使用:

vm.isTrue = function(){
    var isOldEnough = vm.age > 5;
    var isYoungEnough = vm.age < 100;
    var nameLengthIsCorrect = vm.name.length > 5;
    var inSpainOrInEngland = ["Spain","England"].includes(vm.location);
    return isOldEnough && isYoungEnough && nameLengthIsCorrect && inSpainOrEngland;
}
vm.isTrue=function(){
var isOldEnough=vm.age>5;
var IsYoungough=vm.age<100;
var namelingthisCorrect=vm.name.length>5;
var inSpainOrInEngland=[“西班牙”、“英格兰”]。包括(虚拟机位置);
返回isOldEnough&&IsYoungough&&Name长度在PainOrengland正确(&N);
}

这样,您的代码就不言自明了。

这一切都取决于个人偏好;您需要处理其他开发人员的不同意见,以防您发现自己所在的团队希望它位于
属性中,而其他人希望它位于控制器中。我更愿意将尽可能多的
code
保留在我的应用程序的
视图
部分之外,并将其保存在我认为属于它的控制器中。
vm.isTrue = function(){
    var isOldEnough = vm.age > 5;
    var isYoungEnough = vm.age < 100;
    var nameLengthIsCorrect = vm.name.length > 5;
    var inSpainOrInEngland = ["Spain","England"].includes(vm.location);
    return isOldEnough && isYoungEnough && nameLengthIsCorrect && inSpainOrEngland;
}