Onsen UI开关自动更改

时间:2016-11-09 20:36:48

标签: onsen-ui onsen-ui2

我正在尝试使用Onsen UI直接做一些事情 - 自动取消选中一些已检查的开关。所以,我有许多开关,我想模仿单选按钮的行为(基本上切换一个将所有其他设置为非检查)。

我正在使用angular,当我尝试从代码中执行此操作时出现此错误。

  

未捕获TypeError:document.getElementsByTagName(...)[0] .setChecked   不是一个函数(...)

基本上我试过

$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 个答案:

答案 0 :(得分: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