Angular 带有 ng-repeat 的单选按钮列表

Angular radio button listing with ng-repeat

如何在单击 'clear' 按钮时清除单选按钮的选中状态?

在 ng-repeat 中列出单选按钮,

<label ng-repeat="item in items">
  <input type="radio" name="test" ng-model="test" value="{{item.name}}" />{{item.name}}
</label>


<a class="undo" ng-click="clear()">Clear</a>

fiddle

是否可以从另一个控制器清除检查状态?

您可以使用广播事件。看到这个答案:

然后在控制输入收音机的控制器中,执行以下操作:

.controller('radioController', function($scope){
    $scope.$on('triggerClearRadio', function(){

        $scope.items.forEach(function (item, i) {
            item.checked = false;
        });

    });
});

更改输入 html 以使用 ng-model="item.checked" 而不是 ng-model="test"

通过您的清除按钮,您可以像这样广播 'triggerClearRadio' 事件(不过可以命名为更好的名称):

<button type="button" ng-click="$root.$broadcast('triggerClearRadio')>Clear radios</button>

看到这个fiddle:http://jsfiddle.net/takuan/aaoub2mg/

这会很好..!!!

angular.module("myApp", []).controller("Example", ["$scope", function($scope) {
 $scope.data  = {};
  
    $scope.items = [
     {name: 'one'},
      {name: 'two'},
      {name: 'three'},
      {name: 'four'},
      {name: 'five'},
      ];
      
      $scope.clear = function(){
      $scope.data = {};
      //alert("hello");
      }
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.12/angular.min.js"></script>
<div ng-app="myApp" ng-controller="Example">


<label ng-repeat="item in items">
  <input type="radio" name="test" ng-model="data.test" value="{{item.name}}" />{{item.name}}
</label>
<br>
 <a class="undo" ng-click="clear()">Clear</a>

</div>