2015-09-22 3 views
0

У меня есть функция в моем контроллере, которая управляет DOM. Я понимаю, что это плохая практика, и манипуляции с DOM должны быть преобразованы в директиву. У меня возникли проблемы с выводом его из контроллера и его собственной директивой.Перемещение функции от контроллера к директиве

У меня есть следующий пример кода в мой контроллер:

$scope.sidebarToggle = function() { 
    if ($scope.request = null) { 
    $(#container).switchClass('bottom', 'top', 400, 'linear'); 
    $scope.editing = true; 
    } 
    else { 
    $(#container).switchClass('top', 'bottom', 400 'linear'); 
    $scope.editing = false; 
    { 
}; 

если условия очень упрощена, в прямом коде Есть несколько условий, приведенный выше код в. В противном случае могла бы быть указана ng-show/hide.

Целью кода является распознавание состояния, в котором находится пользователь, открытие/скрытие боковой панели вне экрана (назначения класса) и установка состояния «редактирования» контроллера.

Как это может быть реорганизовано в директиву для достижения той же цели?

+0

является контейнером в том же объеме? – gaurav5430

ответ

0

Для начала ознакомьтесь с документацией по угловым директивам. https://docs.angularjs.org/guide/directive

Для «угловатости» класса контейнера используйте ng-класс.

пример @Adding multiple class using ng-class

+0

Привет, Джей - Спасибо, я определенно читал документы и пытался переместить код, но только что застрял на нем. Я часто использую директиву ng-class, но я считаю, что логика, которую я имею, слишком сложна и/или лучше подходит в пользовательской директиве. – Flignats

+0

Не знаете, нужны ли вам в этом случае директивы. Вы могли бы улучшить приведенный выше код, просто переместив настройку класса на угловую разметку и установив только базовую переменную углового диапазона в контроллере. –

0

Вы, вероятно, не нужно, чтобы создать свою собственную директиву для этого.

Угловые уже созданы некоторые директивы, которые могут вам помочь.

В вашем случае, вы должны использовать угловую директиву: нг-шоу и нг-класс или нг-стиль

Exemple:

HTML

<div ng-show="request == null"> Edit </div> 
<div ng-class="{'class-top': request == null,'class-bottom' : request != null}"> <div> 

CSS:

.class-top{ 
... 
} 
.class-bottom{ 
... 
} 

Сообщите мне, если он сработает для вас,

Нико

-1

Попробуйте это:

app.directive('test', function() { 
    return { 
    restrict: 'E', 
    scope: { 

    }, 
    link: sidebarToggle 
    }; 
}); 

Я думаю, что это создает директиву и ссылку на вашу функцию sidebarToggle

Смежные вопросы