AngularJS v1.6.3,監聽數據變化$scope.$watch不生效問題

在頁面使用數據綁定,並且監聽的時候發現了$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節點之後,並生成了一個新的作用域,他們在不同的作用域中當然監聽不到數據的變化。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章