在页面使用数据绑定,并且监听的时候发现了$scope.$watch并不生效,代码如下:
<div class="col-sm-2" ng-if="!Show">
<label for="Tdg_Mode">提货方式:</label>
<select ng-model="Tdg_Mode" ng-options="i.Value_Data as i.Value_Desc for i in dataTdg_Mode" id="Tdg_Mode" class="RoleTypeclass form-control" >
<option value="">请选择提货方式</option>
</select>
</div>
将代码改成如下后可以使用:
<div class="col-sm-2" ng-show="!Show">
<label for="Tdg_Mode">提货方式:</label>
<select ng-model="Tdg_Mode" ng-options="i.Value_Data as i.Value_Desc for i in dataTdg_Mode" id="Tdg_Mode" class="RoleTypeclass form-control" >
<option value="">请选择提货方式</option>
</select>
</div>
总结:
因为使用了ng-if数据绑定不上,后面改用ng-show之后可以正常的监听到数据的变化。ng-show是通过CSS显示或隐藏DOM节点,而ng-if是真正生成或移除DOM节点。
在生成新的DOM节点之后,并生成了一个新的作用域,他们在不同的作用域中当然监听不到数据的变化。