簡體   English   中英

ng-change無法與單選按鈕一起使用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM