我有这样的代码:
<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,但我仍然想知道为什么这不起作用。
答案 0 :(得分:0)
即使“ng-model”存在,“onChoice”功能也能正常工作。 检查控制器逻辑后。
我写了一个示例程序。并查看Plunkr
angular.module('todoApp', [])
.controller('TodoController', ['$scope', function($scope) {
$scope.onChoice = function(){
alert("changed.");
};
}]);