【问题标题】:Conditional ng-include in angularjsangularjs中的条件ng-include
【发布时间】:2013-04-05 03:24:06
【问题描述】:

如何在 angularJS 中有条件地执行 ng-include?​​p>

例如,如果变量x 设置为true,我只想包含一些内容。

<div ng-include="/partial.html"></div>

【问题讨论】:

    标签: angularjs angularjs-ng-include


    【解决方案1】:

    如果您使用的是 Angular v1.1.5 或更高版本,也可以使用ng-if

    <div ng-if="x" ng-include="'/partial.html'"></div>
    

    如果您有任何旧版本:

    使用ng-switch:

    <div ng-switch on="x">
       <div ng-switch-when="true" ng-include="'/partial.html'"></div>
    </div>
    

    Fiddle

    【讨论】:

    【解决方案2】:

    我遇到了类似的问题,也许这个发现可以帮助别人。我必须在点击链接时显示不同的部分,但 ng-if 和 ng-switch 在这种情况下都不起作用(下面的代码不起作用)。

    <button type="button" class="btn btn-link" ng-click="viewType('LIST')">List All</button>
    <button type="button" class="btn btn-link" ng-click="viewType('EDIT')">Edit</button>
    <button type="button" class="btn btn-link" ng-click="viewType('VIEW')">View</button>
    
    <section class="col-md-8 left-col">
        <span ng-if = "LIST">
            <div data-ng-include="'./app/view/articles/listarticle.html'">
        </span>
        <span ng-if = "EDIT">
            <div data-ng-include="'./app/view/articles/editorarticle.html'">
        </span>
    
    </section>
    

    所以我所做的是,而不是使用 ng-if,在单击链接时只需更新 partialArticleUrl 的值(它是控制器中的模型)并在 html 上声明以下代码。

            <section class="col-md-8 left-col">
                <div data-ng-include="partialArticleUrl">
            </section>
    

    【讨论】:

      【解决方案3】:

      其中一个答案的可读性更高的版本。加上将 ng-include 设置为 null 会删除元素 - 就像 ng-if

      <div ng-include="x ? 'true-partial.html' : null"></div>
      

      【讨论】:

        【解决方案4】:

        如果条件足够简单,也可以直接将条件逻辑放在ng-include表达式中:

        <div ng-include="x && 'true-partial.html' || 'false-partial.html'"></div>
        

        请注意,表达式x 不在单引号中,因此需要计算。详情请见http://plnkr.co/edit/4fvNDa6Gm3dbVLgsAZrA

        【讨论】:

        • 我会说接受的解决方案实际上更具可读性,因为检查条件和实际包含很好地分开。
        【解决方案5】:

        你也可以这样做

        <div ng-include="getInclude()"></div>
        

        在你的控制器中

        $scope.getInclude = function(){
            if(x){
                return "partial.html";
            }
            return "";
        }
        

        【讨论】:

        • 真的很好。 ng-switch 标记的答案对我不起作用。
        • 控制器是否适合设置视图文件?我认为,不。@Mark Rajcok 的答案是正确的。
        猜你喜欢
        • 1970-01-01
        • 2021-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-04
        • 2017-02-02
        相关资源
        最近更新 更多