• 条件判断 ng-if / ng-show / ng-hide
    • ng-ifng-show/ng-hide的区别
    • 冒号中的表达式

    条件判断 ng-if / ng-show / ng-hide

    本节我们将学习的是如何通过变量来控制HTML是否显示。

    这三个语句具体的用法如下:

    $scope.data中添加flag变量,设置默认值为true

    1. //app.js
    2. $scope.data = {
    3. message: "Hello",
    4. flag: true
    5. };

    将以下代码放置在FirstCtrl中

    1. <input type="checkbox" ng-model="data.flag">通过复选框来控制文字是否显示
    2. <!-- 如果data.flag == true,则显示此段文字-->
    3. <div ng-if="data.flag">
    4. <p>ng-if中的文字</p>
    5. </div>
    6. <!-- 如果data.flag == true,则显示此段文字-->
    7. <div ng-show="data.flag">
    8. <p>ng-show中的文字</p>
    9. </div>
    10. <!-- 如果data.flag == false,则显示此段文字-->
    11. <div ng-hide="data.flag">
    12. <p>ng-hide中的文字</p>
    13. </div>

    运行结果

    图4-5 ng-if为真时界面

    图4-6 ng-if为假时界面

    从上面的例子可以看出,如果复选框打勾,则界面只显示了前两行文字;而取消复选框的打勾,则显示了最后的一行文字。这个特性可以用于展示界面上的某些信息或者按钮。

    ng-ifng-show/ng-hide的区别

    虽然效果看起来类似,但ng-if的工作模式与ng-show/ng-hide不一样。

    如果使用ng-if来控制元素是否显示,则在不显示的情况下,ng-if中包含的内容,会被全部从HTML中移除掉。

    而如果使用ng-show/ng-hide,AngularJS只是使用CSS控制将内容隐藏起来。

    这两者可以应用于不同的场景,如果内容较多,且之后不会使用到,那么可以使用ng-if;如果之后还可能会显示出来,那么可以使用ng-show/ng-hide

    冒号中的表达式

    例子中使用了data.flag直接作为判断依据,但是以上三个标签都支持传入表达式。

    比如以下的表达式都可以作为冒号中的表达方式:

    1. data.flag >= 1
    2. data.flag == true

    但是请注意,在ng-model,ng-if等标签中传入参数时,是不需要双括号{{}}将参数包裹起来的。