为什么angularjs忽略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>

我尝试使用ng if,但没有编译他。查找测试代码:

<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 ...

和它的工作,“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>