欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Angularjs 几个指令的坑

Angularjs 几个指令的坑

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/afzaici/article/details/51669666

一、问题描述

1、AG的两个指令,ngShow和ngIf,这两个属性简单描述一下:

ngShow - - 这个指令可以控制添加的html元素的显示与消失,作用类似于css的dispaly:none和block,

ngIF -- 这个指令效果和ngShow是一样的,不同的是ngIF是直接删除与显示htmt元素,删除Dom;

使用比较简单,重点来了,坑在于ngif使用上需要谨慎,会遇到scope绑定值错误的情况

2、简单的例子

HTML代码


<div ng-show="isshow" style="padding: 10px;border: solid red 1px;">
<h1>我是ngshow</h1>
<input ng-model="psd" type="text" id="psd" name="psd" placeholder="输入密码">
<p>密码:{{psd}}</p>
</div>
<div ng-if="isif" style="padding: 10px;border: solid red 1px;">
<h1>我是ngif</h1>
<input ng-model="name" type="text" id="name" name="name" placeholder="输入姓名">
<p>姓名:{{name}}</p>
</div>
<button class="btn btn-primary" ng-click="changeShow()">点击我ngshow变化</button>
<button class="btn btn-primary" ng-click="changeIf()">点击我ngif变化</button>
<p>姓名:{{name}}</p>
<p>密码:{{psd}}</p>


Js:

$scope.isshow = true;
$scope.isif= true;
$scope.changeShow = function() {
$scope.isshow = !$scope.isshow ;
}
$scope.changeIf = function() {
$scope.isif = !$scope.isif ;
}


分析一下代码:

很简单的一段代码,两个div里的内容风格是一致的,通过下面两个按钮控制消失,div里面都有一个输入框,用ng-model绑定了一个值,

我们输入后,发现,ngIF绑定的值是无法显示在外面的p标签外面。

结论:ngIF会影响并阻断scope绑定值,ngshow不会,建议:div里面有很多其他指令如ngmodel的尽量使用ngshow,单个独立的可以使用ngif


这个代码写的很简单,在项目中,经常会遇到,突然拿不到值得情况,好几百html代码,最后发现是滥用了ngif,所以才写此文章。


来自  https://blog.csdn.net/afzaici/article/details/51669666

普通分类: