2016-11-09 45 views
2

我想直接用温泉用户界面做一些事情 - 自动取消选中某些选中的开关。所以,我有很多开关,我想模仿单选按钮的行为(基本上是将所有其他开关设置为未检查)。温泉的用户界面开关自动更改

我使用的角度和我得到这个错误,当我尝试从代码做到这一点。

Uncaught TypeError: document.getElementsByTagName(...)[0].setChecked is not a function(…)

基本上我试图

$scope.$on('toggle', function(event, data) {   
      $scope.selected[data] = event.targetScope.model; 
      for (i = 0; i < $scope.selected.length; i++) { 
       if (i != data) { 
        $scope.selected[i] = !$scope.selected[data]; 
       } 
      } 
     }); 

我的所有交换机都加入动态使用:

> var h = '<ons-list-item><div class="center">' + placeResult.name 
>     + '</div><div class="right"><ons-switch id="switch' + i 
>     + '" "ng-model="mySwitch' + i 
>     + '" ng-click="$emit(\'toggle\',' + i 
>     + ')"></ons-switch> </div></ons-list-item>';    

我不知道,如果动态地添加他们主要有任何问题?

我试着与预设开关相同的代码,它的工作原理。

感谢

+1

你是否手动调用'.setChecked(true)'?这是v1。为v2尝试'.checked = true'。 –

+0

我也尝试过,不起作用。 document.getElementsByTagName(“ons-switch”)[0] .checked undefined – ilijaluve

+1

这不是角度,所以我没有给它作为答案,但这里是一个香草工作示例:https:// codepen。 io/anon/pen/zoqdQm – Munsterlander

回答

1

据我所知,你正试图使一些复选框有一个主复选框其选中状态由所有其他盒/交换机模仿。

如果是这种情况,在Angular中,您可以轻松使用ng-checked指令。这里是一个例子:

<input type="checkbox" ng-model="check-all">Check all<br> 
<input type="checkbox" ng-checked="check-all">Option 1<br> 
<input type="checkbox" ng-checked="check-all">Option 2<br> 
<input type="checkbox" ng-checked="check-all">Option 3 
+0

不完全。我想要收音机的效果。所以一旦我开启一个开关,所有其他的将自动关闭。 – ilijaluve