Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.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
Angularjs 内联if中的多个语句_Angularjs_Conditional Operator - Fatal编程技术网

Angularjs 内联if中的多个语句

Angularjs 内联if中的多个语句,angularjs,conditional-operator,Angularjs,Conditional Operator,AngularJS表达式中的内联if语句中是否可能有多个语句?例如,以下操作失败: ng-change="someCondition() ? doA(); doB() : doC()" ng-change="someCondition() ? doA(), doB() : doC()" 这可以通过以下方式完成: ng-change="someCondition() ? doA() : doC(); someCondition() ? doB() : ''" 但这很难看,调用someCondi

AngularJS表达式中的内联if语句中是否可能有多个语句?例如,以下操作失败:

ng-change="someCondition() ? doA(); doB() : doC()"
ng-change="someCondition() ? doA(), doB() : doC()"
这可以通过以下方式完成:

ng-change="someCondition() ? doA() : doC(); someCondition() ? doB() : ''"

但这很难看,调用someCondition()两次,然后尖叫着要在控制器中完成。有没有办法让第一个示例正常工作?

您的第一个示例不是有效的javascript。 您的第二个示例包含
,它们不能是任何角度表达式(不确定javascript是否有效)

根据您的用例,您有时可以使用
&&
|
使其工作

然而,模板中的代码仍然是代码。尽量使它可读。如果无法使其可读,请将其提取到控制器中的函数中

ng-change="onChange()"

角度表达式仅限于简单表达式。解析器可能会拒绝任何更复杂的内容,并抛出错误。阅读文档中的不同之处。即:

  • 无控制流语句:不能在角度表达式中使用以下语句:条件、循环或异常

  • 无逗号和无效运算符:不能在角度表达式中使用
    Void

等等


您可以做的最好的事情是在控制器中创建一个函数,该函数将结合
doA
doB
。它不仅会使角度解析变得愉快,而且代码本身也会变得更干净,更易于阅读。所有这些都是模板,最好保持简单。

请尝试以下场景:

在多个语句中使用()

ng change=“someCondition?(doA(),doB()):doC()


ng change=“someCondition?(doA(),doB()):doC()”

我用三元运算符在角度8中尝试了类似的方法

<input 
maxlength="{{memberProofForm.proofTypeId === 1?16:(memberProofForm.proofTypeId === 2?10:(memberProofForm.proofTypeId === 3?15:77))}}"
name="proofIdNumber" 
required 
type="text"
[(ngModel)]="memberProofForm.proofIdNumber">

你想做什么?你不应该在dom中做那么多逻辑。将其全部移动到一个函数,然后调用该函数。让js在dom中保持简单。@DigitalFiz我同意,但我觉得它很容易阅读(使用带有ng model=“email”的输入和带有ng model=“emailOptOut”)emailOptOut的复选框?emailCache=email,email=undefined:email=emailCacheAh,不知道关于禁止使用逗号或void(或关于RegEx或过滤器)的规定。ThanksdoA()可能会释放一个真实或虚假的值,所以如果我要走这条路(这很聪明,我也很喜欢),我就必须做ng change=“someCondition()?(doA()&&0)| doB():doC()
if(memberProofForm.proofTypeId === 1){
    return 16;
}
}else{
    if(memberProofForm.proofTypeId === 2){
        return 10;
    }else{
        if(memberProofForm.proofTypeId === 3){
            return 15
        }else{
            return 77;
        }
    }
}