AngularJS ng要求不使用变量

AngularJS ng要求不使用变量,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我必须使用所需的指令ng,但我不能硬编码true或false。我需要在变量中使用它,但angular不识别“true” 两者都有ng required=“true” 一个作为硬编码字符串文字,一个通过变量 检查它们,不需要一个! 我怎样才能让它工作? <input type="text" ng-required="{{test}}" /> 这里不需要插值测试。因为您想评估test的值,所以只需删除大括号,它就可以工作。昨天刚刚发现,您可以在与ng类相同的模式中使用ng

我必须使用所需的指令ng,但我不能硬编码true或false。我需要在变量中使用它,但angular不识别“true”


两者都有ng required=“true”

一个作为硬编码字符串文字,一个通过变量
检查它们,不需要一个!
我怎样才能让它工作?


<input type="text" ng-required="{{test}}" />

这里不需要插值测试。因为您想评估test的值,所以只需删除大括号,它就可以工作。

昨天刚刚发现,您可以在与ng类相同的模式中使用ng required:

<input type = "text" ng-required = "{true : 'true', false : 'false'}[test]" />

出于某种原因,两种答案都不起作用,只需使用

ng-required="expired"

将expired作为变量。

我个人在这类指令中使用了三元运算符,效果很好。对于所需的ng:

<input type="text" ng-required="(user.name == '' ? 'true' : 'false')" ng-model="user.nickname"/>


在本例中,如果未填写用户的“姓名”字段,则“昵称”字段将成为必填项。

我明白了。ng required指令尝试直接访问给定字符串文字命名的范围内的变量。一旦它将{test}}求值为“true”,它就会尝试查找scope.true,而这是未定义的。Undefined不是==true,因此它不是必需的。谢谢你!插值的结果总是一个字符串。@JM。你就是那个家伙!我确实尝试了您建议的ng required=“{true:'true',false:'false'}[test]”,但我很好奇为什么ng required=“{{test}}”不起作用?@Yoo在Angular指令中,您不必用双括号“{{}”来包装表达式,因为它已经完成了。但是,必须在非角度参数上使用它,例如“名称”、“类”、“id”……接受的参数表示完全相同。请仔细阅读。您能解释一下为什么
ng required=“user.name=”
不够吗?
<input type="text" ng-required="(user.name == '' ? 'true' : 'false')" ng-model="user.nickname"/>