【问题标题】:Angular directive ng-if does not evaluate conditional statementAngular 指令 ng-if 不评估条件语句
【发布时间】:2014-05-29 15:46:49
【问题描述】:

我是 web 开发和 AngularJS 的新手。我正在尝试使用指令 ng-if 仅在从数据库返回的列表大于 1 时显示 div 块,但它不起作用。我在滥用指令吗?我环顾四周,没有找到任何可行的解决方案。目前,两个 div 都会显示,ng-ifs 会被忽略。

<div>
    <div ng-if="listOfThings.length > 1">
        <h1> {{listOfThings.length}} </h1>
        </br>
        <div ng-repeat="thing in listOfThings">
           <label> {{ thing.name }} </label>
        </div>
    </div>
    <div ng-if="listOfThings.length == 1" class="col-sm-4 col-sm-offset-4">
        <h1> {{ listOfThings[0].name }} </h1>
        <iframe width="560" height="315" ng-src="{{ listOfThings[0].embed }}" frameborder="0" allowfullscreen></iframe>
    </div>
</div>

我尝试了这段代码,它在 Plunker 中有效,但由于某种原因在我的代码中无效。在我的代码中,只有 ng-app 有效,但 ng-if 仍然无效。

    <div ng-app="ngAnimate">
        Click me: <input type="text" ng-model="check" ng-init="check='show'" /><br/>
        Show when check: {{check}}
        <input ng-if="check!='hide'" class="animate-if" placeholder="type the word 'hide'"/>
    </div>

【问题讨论】:

    标签: javascript html angularjs angular-ng-if


    【解决方案1】:

    你想要的不是这个ng-if="{{listOfThings.length}} &gt; 1",而是这个:

     ng-if="listOfThings.length>1"
    

    ng-if 将评估表达式。

    检查这个Online Demo

    【讨论】:

    • 我尝试了你的建议,它仍然显示两个 div。
    • @Soubriquet 有 plunker 演示,它的工作原理你给我看你的代码怎么样
    • 好的,所以我将您链接到我的 html 中的 plunker 代码复制了,ng-if 仍然无法正常工作,但 np-app 可以工作。 :/ 我编辑了我的原始帖子以显示我尝试过的 plunker 代码。
    • 没关系。感谢所有的帮助。查看 Plunker 代码后,我意识到我下载了 AngularJS 1.3.0 并且加载的是旧版本。再次感谢。现在可以了。
    【解决方案2】:

    应该这样做

    <div>
        <div ng-if="listOfThings.length > 1">
            <h1> {{listOfThings.length}} </h1>
            </br>
            <div ng-repeat="thing in listOfThings">
               <label> {{ thing.name }} </label>
            </div>
        </div>
        <div ng-if="listOfThings.length == 1" class="col-sm-4 col-sm-offset-4">
            <h1> {{ listOfThings[0].name }} </h1>
            <iframe width="560" height="315" ng-src="{{listOfThings[0].embed}}" frameborder="0" allowfullscreen></iframe>
        </div>
    </div>
    

    【讨论】:

    • @Matthews,你能解释一下这个加起来是怎么考虑这不是已经发布的答案的副本吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多