ng-show的奇怪问题总是评估为真

时间:2015-07-02 20:58:12

标签: angularjs

我的视图中有一些代码只会在特定值为真时出现。看起来像这样:

button type="button" ng-click="attachBarCode('enter')" ng-show="barcodeAllowed.status">Foo</button>

直到最近才开始工作。我的控制器有一些逻辑,根据Ajax数据,它会将$ scope.barcodeAllowed.status设置为true。突然间,按钮总是出现。为了帮助调试问题,我在视图中添加了一些额外的测试:

    first test, <span ng-show="!barcodeAllowed.status">DONT SHOW</span><br/>
    second test, <span ng-show="barcodeAllowed.status">DONT SHOW</span><br/>
    test -{{barcodeAllowed.status}}-end -{{!barcodeAllowed.status}}- -{{barcodeAllowed | json}}-<br/>
    test if <span ng-if="barcodeAllowed.status"> if was true</span><p>

这是事情变得疯狂的地方。在我看来,两者“不要显示”,即使看起来好像不可能。当我输出第三行中的值时,我看到了假和真,如我所料。

最后 - ng-if?它工作得很好!价值没有显示出来。

我听说人们提到ngShow可以在ngif中包含范围问题,但是我的代码不在ngif中。

2 个答案:

答案 0 :(得分:4)

所以,你不会相信它是什么。我在我的应用程序中使用了内容安全策略,并且随心所欲地禁用了它。我一做到这一点就开始工作了。我玩了一下,发现我需要添加&#39; unsafe-eval&#39;到我的CSP的script-src区域,以便Angular能够应用样式。

答案 1 :(得分:0)

Ng-show / Ng-hide指令需要一个css类来显示/隐藏,因为它只是在scope-variable为truthy / falsy时为你的元素添加一个类。

参考:https://docs.angularjs.org/api/ng/directive/ngShow