Это не стабильно.
Попробуй найти ui-if в angularUI. |
Вот два примера как можно разместить код jquery внутри директивы
Решение 1 делаем крошечную директиву projectModule.directive('clickhide',function(){ return function($scope,$element){ $element.children().hide(); $element.on('click',function(){ $(this).children().toggle(); }); } }) Смотрим в работе <!DOCTYPE HTML> <html ng-app="project"> <head> <script src="https://code.jquery.com/jquery-2.0.3.min.js"></script> <script src="http://code.angularjs.org/angular-1.0.1.js"></script> </head> <body > <script> var projectModule = angular.module('project',[]); // наша директива projectModule.directive('clickhide',function(){ return function($scope,$element){ $element.children().hide(); $element.on('click',function(){ $(this).children().toggle(); }); } }) function FirstCtrl($scope) { $scope.data=[1,2,3,4,5,6]; } </script> <div ng-controller="FirstCtrl"> <ul> <li ng-repeat="i in data" clickhide>Кликни по мне {{i}} <br/> <ul> <li>пример 1</li> <li>пример 2</li> <li>пример 3</li> </ul> </li> </ul> </div> </body> </html> Помучить здесь Решение 2 Используем делегирование событией <!DOCTYPE HTML> <html ng-app="project"> <head> <script src="https://code.jquery.com/jquery-2.0.3.min.js"></script> <script src="http://code.angularjs.org/1.2.0-rc.3/angular.min.js"></script> </head> <body > <script> var projectModule = angular.module('project',[]); // наша директива projectModule.directive('clickhide',function(){ return function(scope,element){ //вопрос чем замеить setTimeout остается открытым //так как link post это последний callback //Впрочем содержимое можно скрыть при помощи CSS setTimeout(function(){ $('.s',element).children().toggle(); },1) $(element).on('click','.s',function(){ $(this).children().toggle(); }) } }) function FirstCtrl($scope) { $scope.data=[1,2,3,4,5,6]; } </script> <div ng-controller="FirstCtrl"> <ul clickhide> <li ng-repeat="i in data" class="s" >Кликни по мне {{i}} <br/> <ul> <li>пример 1</li> <li>пример 2</li> <li>пример 3</li> </ul> </li> </ul> </div> </body> </html> Помучать можно здесь Несмотря на то что я применил setTimeout это вполне безопасно так как кэлбэк таймаута гарантированно сработает после рендеринга и иначе быть не может |
Цитата:
|
Спасибо всем за советы, будем разбираться.
|
Часовой пояс GMT +3, время: 08:33. |