在使用angularjs的時候可能會出現通過$scope
獲取不到通過ng-mode
綁定的表單元素的值,這可能是多種原因造成的授段,筆者遇到的情況大致如下:
代碼示例
- template
<div ng-repeat="kind in kinds">
<label class="i-checks">
<input type="radio" ng-model="kind" ng-value="{{ kind.id }}"><i></i> {{ kind.name }}
</label>
</div>
- controller
console.log($scope.kind);
- 當
template
中觸發(fā)了某個事件后執(zhí)行到controller
中的代碼時打印出來的$scope.kind
在不論單選框是否選中的情況下都是undefined
。
問題根源
radio
的ng-model
位于ng-repeat
中揍庄,ng-repeat
會創(chuàng)建自己的scope
救鲤,所以在controller
中通過$scope.kind
獲取的并不是ng-repeat
中的kind
而是全局的久窟,但是全局的kind
并沒有定義。
解決辦法
將template
中的ng-model="kind"
調整為ng-model="$parent.kind"
即可本缠,完整的template
代碼為:
<div ng-repeat="kind in kinds">
<label class="i-checks">
<input type="radio" ng-model="$parent.kind" ng-value="{{ kind.id }}"><i></i> {{ kind.name }}
</label>
</div>
本文首發(fā)于公眾號:programmer_cc斥扛,轉載請注明出處。