Javascript 如果为false,则执行ng中的代码

Javascript 如果为false,则执行ng中的代码,javascript,html,angularjs,angularjs-directive,angular-ng-if,Javascript,Html,Angularjs,Angularjs Directive,Angular Ng If,假设我有这样的代码: <span>Do you like bananas?</span> <input type="radio" ng-model="likeBananas" name="likeBananas" value="yes"> <input type="radio" ng-model="likeBananas" name="likeBananas" value="no"> <div ng-if="likeBananas ===

假设我有这样的代码:

<span>Do you like  bananas?</span>
<input type="radio" ng-model="likeBananas" name="likeBananas" value="yes">
<input type="radio" ng-model="likeBananas" name="likeBananas" value="no">
<div ng-if="likeBananas === 'no'">
    <label>Tell us why?</label>
    <textarea ng-model="whyNot" ng-required="likeBananas === 'no'"></textarea>
</div>
你喜欢香蕉吗?
告诉我们为什么?

想法是:如果用户不喜欢香蕉,则需要有解释的
。如果用户喜欢香蕉,当然它不是必需的,也不会显示给用户。因为这个字段是动态的,所以我使用了
ng required=“比如说,我真的需要它吗?”?也许简单的
必需的
可以完成工作?因为,当
ng if
为false时,
div
的内容不应出现在HTML中。一般问题是-如何使用
ng if
s指令从上到下或从下到上在元素内部执行代码?在第一种情况下,如果元素中的
ng if
s为false,则不应执行该元素中的代码;在上述情况下,当
div
不存在且可能不需要时,不计算
ng required
。我希望您能帮助我解决我的疑问-提前谢谢您。

不,您应该简单地将
ng required=true
用于
ng if
指令(在您的情况下),因为该指令行为是在条件切换时从DOM中删除/添加
其中的元素

因此,如果
likebanas!='没有“
,元素

<label>Tell us why?</label>
<textarea ng-model="whyNot" ng-required="likeBananas === 'no'"></textarea>
告诉我们为什么?

未包含在DOM中,因此未编译
ng require=true

请在Plunk中查看:

通过制作
表单
元素,您可以通过执行以下操作检查其有效性:

Is the form valid? {{banana.$valid}}

你为什么不试试呢?将其更改为
required
,并在
likebanas==“no”
为true时查看您的表单是否为$valid。(将其放入html:
{{myForm.$valid}}')。要测试您的其他假设,请在调用函数的文本区域中添加一个
ng init`,该函数使用
console.log将消息记录到控制台。确保测试的
likebanas
不是“否”。