[英]ng-change not working with radiobutton
我有這樣的代碼:
<div class="form-group">
<div class="col-sm-8 col-md-offset-4">
<label class="ui-radio"><input name="radio1" type="radio" value="A" ng-model="$data.choice" ng-change="onChoice()"><span>A</span></label>
</div>
</div>
<div class="form-group">
<div class="col-sm-8 col-md-offset-4">
<label class="ui-radio"><input name="radio1" type="radio" value="B" ng-model="$data.choice" ng-change="onChoice()"><span>B</span></label>
</div>
</div>
如您所見,有一個$ data.choice ng模型,該模型在更改時應觸發一個“ onChoice()”函數,該函數在控制器上定義(ng-controller在視圖上定義且正常工作)。 問題是該函數不會觸發,但是如果我刪除“ $ data”並將其保留為ng-model =“ choice”,則它可以完美運行。
$ data只是我在$ scope上定義的變量。 我實際上可以通過按鈕和ng-click觸發onChoice(),但不適用於ng-change。 我想這是ng-change的問題,但我不知道發生了什么。
編輯
好的,因為我看到它並不是那么簡單,所以我將添加一些信息:
這是我的控制器,它包括與$ parent控制器的一些交互,所以我不知道這是否會影響:
$scope.data = $scope.$parent.data;
$scope.data.choice = $scope.data.choice || 'vote';
$scope.onChoice = function(){
//stuff
};
我知道初始化變量時的邏輯似乎很奇怪,但這很重要,我只是簡化了代碼。 也許我可以更改邏輯以僅使用$ scope.choice而不是$ scope.data.choice,但是我仍然想知道為什么這行不通。
即使存在“ ng-model”,“ onChoice”功能也可以正常工作。 一旦檢查您的控制器邏輯。
我寫了一個示例程序。 並在Plunkr中簽出
angular.module('todoApp', [])
.controller('TodoController', ['$scope', function($scope) {
$scope.onChoice = function(){
alert("changed.");
};
}]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.