我尝试使用ng-if,但angular没有编译他。查找测试代码:
<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>
和功能测试:
$scope.test = function(){
console.log('d');
return false;
}
如果运行这个页面,我们可以在"Li"中看到"ddd",尽管测试返回false。
下一步,我在"ng if"ng show"替换:
<ul class="tmmenu-admin-tabs-builder-panel-answer">
...
<span ng-show="test()">ddd</span>
...
</ul>
它起作用,"ddd"隐藏。为什么不在工作的地方工作呢?
ngIf指令基于{expression}删除或重新创建DOM树的一部分。如果分配给ngIf的表达式的计算结果为false,则从DOM中删除该元素,否则将该元素的克隆重新插入到DOM中。
ngShow指令根据提供给ngShow属性的表达式显示或隐藏给定的HTML元素。通过在元素上移除或添加ng-hide CSS类,可以显示或隐藏元素。ng-hide CSS类在AngularJS中预定义,并将显示样式设置为none(使用!important标志)。对于CSP模式,请将angular-CSP.css添加到您的html文件中(请参阅ngCsp)。
可能是作用域问题,子作用域中是否存在可能覆盖test
值的内容?ng if对我来说很好(plunker)。我假设其他一切都很好,你是否在控制台中看到"d
"来表明你的函数正在执行?
试着把你的标签改成这个来帮助调试,你应该看到它是一个函数:
<span ng-if="test()">test is: {{test.toString()}}</span>