AngularJS,ng重复广播和$scope.watch

AngularJS,ng重复广播和$scope.watch,angularjs,Angularjs,我使用这个例子:创建我的单选按钮 我希望能够使用单选按钮上的$scope.watch,但无法使用: $scope.watch('selected', ... 我应该为.watch分配什么才能在用户单击单选按钮时检测到?实际错误是$scope.watch应该是$scope。$watch在scope变量上设置watcher不是一个好主意。我建议您使用ng change,而不是将watcher置于ng模型之上,它只会在单选按钮ng模型值发生更改时触发 <label ng-repeat="opt

我使用这个例子:创建我的单选按钮

我希望能够使用单选按钮上的$scope.watch,但无法使用:

$scope.watch('selected', ...
我应该为.watch分配什么才能在用户单击单选按钮时检测到?

实际错误是$scope.watch应该是$scope。$watch在scope变量上设置watcher不是一个好主意。我建议您使用ng change,而不是将watcher置于ng模型之上,它只会在单选按钮ng模型值发生更改时触发

<label ng-repeat="option in options">
   <input type="radio" ng-change="test()" ng-model="$parent.selected" ng-value="option" />{{option}}
</label>
控制器

实际的错误是$scope.watch应该是$scope。$watch在scope变量上有watcher不是个好主意。我建议您使用ng change,而不是将watcher置于ng模型之上,它只会在单选按钮ng模型值发生更改时触发

<label ng-repeat="option in options">
   <input type="radio" ng-change="test()" ng-model="$parent.selected" ng-value="option" />{{option}}
</label>
控制器


我同意@PankajParker的说法,但你也可以这么做。你只是把语法搞错了,它是$scope。$watch,不是$scope.watch


看看这个:

我同意@PankajParker,但你也可以这么做。你只是把语法搞错了,它是$scope。$watch,不是$scope.watch

看看这个:

小提琴:

加价

小提琴:

加价


谢谢,这就完成了任务。@MichaelNielsen很高兴能帮助你。谢谢:-谢谢,工作做得很好。@MichaelNielsen很高兴帮助你。谢谢:-
appModule.controller('mainController', function($scope) {
  var vm = this;
  vm.selected = 'red';
  vm.options = ['red', 'blue', 'yellow', 'green'];
  vm.test = function() {
    alert('Changed');
  }
});
<div ng-app="app">
    <div ng-controller="mainController">
        <label ng-repeat="option in options">
            <input type="radio" ng-change="picked(this)" ng-model="$parent.selected" ng-value="option"/>{{option}}
        </label>
    </div>
</div>
var appModule = angular.module('app', []);

appModule.controller('mainController', function($scope) {

    $scope.selected = 'red';
    $scope.options = ['red', 'blue', 'yellow', 'green'];
        $scope.picked = function($scope) {
        alert('you picked: ' + $scope.selected);
    }
});