为什么angularjs忽略ng if?
我尝试使用ng if,但没有编译他。查找测试代码:为什么angularjs忽略ng if?,angularjs,angularjs-ng-show,angularjs-ng-if,Angularjs,Angularjs Ng Show,Angularjs Ng If,我尝试使用ng if,但没有编译他。查找测试代码: <ul class="tmmenu-admin-tabs-builder-panel-answer"> <li class="tmmenu-admin-tabs-builder-panel-portlet" ng-repeat="answer in answers"> <div>
<ul class="tmmenu-admin-tabs-builder-panel-answer">
<li class="tmmenu-admin-tabs-builder-panel-portlet" ng-repeat="answer in answers">
<div>
<span ng-repeat="question in questions">
<label ng-repeat="answer in question.answers">
<input type="checkbox">{{question.id}}.{{answer.id+1}}
<span ng-if="test()">ddd</span>
</label>
</span>
</div>
<textarea>{{answer.text}}</textarea>
</li>
</ul>
如果运行此页面,我们可以在“Li”中看到“ddd”,尽管测试返回false
下一步,我将替换为“ng if”“ng show”:
和它的工作,“ddd”隐藏。如果工作ng显示的位置不工作,为什么使用ng?ngIf指令基于{expression}删除或重新创建DOM树的一部分。如果指定给ngIf的表达式的计算结果为假值,则该元素将从DOM中删除,否则将该元素的克隆重新插入DOM
ngShow指令根据提供给ngShow属性的表达式显示或隐藏给定的HTML元素。通过在元素上删除或添加ng hide CSS类来显示或隐藏元素。.ng hide CSS类在AngularJS中预定义,并将显示样式设置为none(使用!重要标志)。对于CSP模式,请将angular-CSP.css添加到您的html文件中(请参阅ngCsp)。可能是作用域问题,子作用域中是否存在可能覆盖
测试值的内容?ng if适合我()。我假设其他一切都正常工作,您是否在控制台中看到“d
”以显示您的函数正在执行
尝试将标记更改为此以帮助调试,您应该看到它是一个函数:
<span ng-if="test()">test is: {{test.toString()}}</span>
测试是:{{test.toString()}
Ok,但如果不删除我的ddd块,为什么要取消?Test()all time return false.在简单的非重复情况下工作正常。在plnkr.co或jsfiddle.net中创建一个复制问题的演示
<ul class="tmmenu-admin-tabs-builder-panel-answer">
...
<span ng-show="test()">ddd</span>
...
</ul>
<span ng-if="test()">test is: {{test.toString()}}</span>