ng-change无法使用单选按钮

时间:2014-11-04 10:53:45

标签: javascript html angularjs

我有这样的代码:

<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-model应该触发&#34; onChoice()&#34;更改时的功能,在控制器上定义(ng-controller在视图中定义并正常工作)。问题是函数没有触发,但是如果我擦除&#34; $ data&#34;并将其保留为ng-model =&#34; choice&#34;它完美无缺。

$ 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,但我仍然想知道为什么这不起作用。

1 个答案:

答案 0 :(得分:0)

即使“ng-model”存在,“onChoice”功能也能正常工作。 检查控制器逻辑后。

我写了一个示例程序。并查看Plunkr

angular.module('todoApp', [])
.controller('TodoController', ['$scope', function($scope) {

$scope.onChoice = function(){
  alert("changed.");  
};

}]);