Der tatsächliche Fehler war $scope.watch
sollte $scope.$watch
sein, Wächter über eine Variable des Umfangs zu haben, wäre nicht die gute Idee. Statt Wächter über ng-model
zu setzen, würde ich vorschlagen, dass Sie ng-change
verwenden, das nur feuert, wenn Radiobutton ng-model
Wert geändert wird.
<label ng-repeat="option in options">
<input type="radio" ng-change="test()" ng-model="$parent.selected" ng-value="option" />{{option}}
</label>
Und dann verwenden Sie nicht von $parent
Notation loszuwerden für Außenumfang ng-repeat
Zugriff Sie können wechseln controllerAs
Muster zu verwenden, und dann ng-Controller-Richtlinie ändern alias
der Controller zu verwenden. dass auch die Controller-Implementierung ändern, binden Wert this
(Kontext) statt $scope
Markup
<div ng-controller="mainController as vm">
<label ng-repeat="option in vm.options">
<input type="radio" ng-change="vm.test()" ng-model="vm.selected" ng-value="option" />{{option}}
</label>
</div>
-Controller
appModule.controller('mainController', function($scope) {
var vm = this;
vm.selected = 'red';
vm.options = ['red', 'blue', 'yellow', 'green'];
vm.test = function() {
alert('Changed');
}
});
Forked Plunkr
Danke, das hat den Job gemacht. –
@MichaelNielsen Froh, Ihnen zu helfen. Vielen Dank :-) –