2014-08-29 70 views
0

我正在使用Angular UI Routing和一個UI插件開發一個基於自舉開關的「複選框開關」的Angular應用程序。交換機不支持Angular UI Routing

問題是模板在打開開關的shell頁面後加載,並且它們顯示爲正常複選框。請注意,複選框被包裝在具有類「switch」的父級div中以正確顯示。

我的願望是創建一個全局解決方案,而不必爲每個交換機添加一個屬性。

這裏是與應用至今一個Plunker: http://embed.plnkr.co/LRSGXqxjtbYcr6rjTj69/preview

我剛開始學習角,所以我明白,是相當具體的答案。謝謝!

HTML:

<div class="switch"> 
    <input type="checkbox"> 
</div> 

JS:

$(".switch").switch(); 

文檔: https://tictail.com/developers/documentation/uikit/#Switches

+0

你嘗試添加開關類直接到輸入? – 2014-08-29 10:56:10

+0

是的。我只是表現爲一個巨大的開關。我應該以此爲例。我還爲交換機的文檔添加了一個url。 – peta 2014-08-29 11:01:24

+0

確保你添加了$(「。switch」)。在document.ready – 2014-08-29 11:04:37

回答

1

不要使用jQuery的切換,但角度:

<div class="switch" data-ng-controller="myController"> 
    <input type="checkbox" ng-model="myCheckbox"> 
</div> 

<button ng-click="switch()">Switch programmatically</button> 

<script type="text/javascript"> 

    angular.module('myApp') 
    .controller('myController', ['$scope', '$timeout', function($scope, $timeout){ 
     $scope.myCheckbox = false; // initialise the checkbox to unchecked 

     $timeout(function(){ // switch to checked 3 seconds later 
      $scope.myCheckbox = true; 
     },3000); 

     $scope.switch = function(){ 
      $scope.myCheckbox = !$scope.myCheckbox; 
     }; 
    }]); 

</script> 

在angularjs應用程序中的DOM操作(來自angularjs FAQ):

停止嘗試使用jQuery來修改控制器中的DOM。真。這包括添加元素,刪除元素,檢索其內容,顯示和隱藏它們。使用內置指令,或者在必要時編寫自己的指令,以執行DOM操作。請參閱下面的重複功能。

如果您正在努力打破這種習慣,可以考慮從您的應用中刪除jQuery。真。 Angular擁有$ http服務和強大的指令,這使得它幾乎總是不必要的。 Angular捆綁的jQLite具有一些寫作Angular指令最常用的特性,特別是綁定到事件。

此外,我建議你這些偉大的資源上的主題

+0

謝謝!我沒有得到任何腳本錯誤,但沒有任何反應。請注意,我正在使用基於jQuery的特定框架,因此我需要使用jQuery,因此交換機的外觀和行爲需要與僅使用jQuery的情況相同。 – peta 2014-08-29 11:44:39

+0

是的。 Jquery和angularjs不是不兼容的,但它們的關聯需要謹慎。我爲你提供了一些額外的資源。 – 2014-08-29 11:58:38

+0

但是,如果沒有出現,可能會出現其他問題。你可以發佈一個jsfiddle,codepen或者重現你的問題嗎? – 2014-08-29 12:01:34