2015-06-26 15 views
2

我在列表中使用ONS-SWITCHVIEW如下:如何使用setChecked在溫泉通過SwitchView

<ons-list-item modifier="item" class="list__item__line-height"> 
    Switch View <ons-switch modifier="list-item" var="switchView" ng-click='onSwitchViewClick()'></ons-switch> 
</ons-list-item> 

,並在我的控制,我想嘗試的東西如下:

if (localStorageService.get('switchView') === 'grid') { 
    $scope.switchView.setChecked(true); 
} 
else { 
    $scope.switchView.setChecked(false); 
} 

然而,我得到了一些錯誤,說明未定義的錯誤。我想這裏一定是錯的:

$scope.switchView.setChecked(true); 

但我不能得到它的工作。任何幫助真的很感激!

回答

2

我想你試圖從控制器訪問開關,然後它在DOM上初始化,這就是爲什麼你得到未定義的錯誤。

這是一個工作CodePen example。和相關的代碼。

在你的情況下,代碼應該是這樣的(我用了一個按鈕,檢查值,但你也可以做到動態):

HTML

<div ng-controller="MyController"> 
 
    <ons-list-item modifier="item" class="list__item__line-height"> 
 
    <ons-switch var="switch"></ons-switch> 
 
    <ons-button ng-click="checkSwitch()">Check switch status</ons-button> 
 
    </ons-list-item> 
 
</div>

控制器

ons.bootstrap() 
 

 
.controller('MyController', function ($scope) { 
 
    $scope.checkSwitch = function() { 
 
    if(localStorageService.get('switchView') === 'grid') 
 
     $scope.switch.setChecked(true); 
 
    else 
 
     $scope.switch.setChecked(false); 
 
    }; 
 
});

+0

所以你的意思方法setChecked在http://onsen.io/reference/ons-switch.html#methods-summary提到不能用? – Nakket

+0

是的,他們可以使用,但我想你正試圖從控制器訪問開關,然後它在DOM上初始化,這就是爲什麼你得到未定義的錯誤 –

+0

@Rafita我編輯我的答案,使用相同的功能,你想要使用 –