2016-11-09 46 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