<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="angular scope ng-if（会创建一个子域）与ng-show的区别" id="card1">
<p> 游客</p><p>
标题:angular scope ng-if（会创建一个子域）与ng-show的区别<br/>
正文:<br/>
angular scope ng-if问题一：ng-model在ng-if里边 这个model的值不能反应到控制器里。&amp;lt;div ng-app &amp;gt; &amp;lt;div ng-controller=&amp;quot;main&amp;quot;&amp;gt; Test A: {{testa}}&amp;lt;br /&amp;gt; Test B: {{testb}}&amp;lt;br /&amp;gt; Test C: {{testc}}&amp;lt;br /&amp;gt;&amp;lt;div&amp;gt; testa (without ng-if): &amp;lt;input type=&amp;quot;checkbox&amp;quot; ng-model=&amp;quot;testa&amp;quot; /&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;div ng-if=&amp;quot;!testa&amp;quot;&amp;gt; testb (with ng-if): &amp;lt;input type=&amp;quot;checkbox&amp;quot; ng-model=&amp;quot;testb&amp;quot; /&amp;gt; &amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;原因是：ng-if 指令像其它指令一样，会创建一个子域（child scope）。因此，ng-if里的ng-model的$scope是子域下的。解决代码是：&amp;lt;input type=&amp;quot;checkbox&amp;quot; ng-model=&amp;quot;$parent.testb&amp;quot; /&amp;gt;或者：&amp;lt;div ng-show=&amp;quot;!testa&amp;quot;&amp;gt; testb (with ng-if): &amp;lt;input type=&amp;quot;checkbox&amp;quot; ng-model=&amp;quot;testb&amp;quot; /&amp;gt;&amp;lt;/div&amp;gt;同样的，问题二：我在ng-if里引用了自定义的指令，然后自定义指令里通过$scope.$parent.variableName='郑州网建' 设置里值。那么，在ng-if所在的控制器里，也是获取不到变量variableName的变化的。因此，ng-if 换成 ng-show 就可以解决了。<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1888&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1888&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1888&amp;Page=1">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=1888">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=1888">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>