Некоторые действия в моем приложении Angular требуют регистрации пользователя. Если пользователь не зарегистрирован, мы хотим показать модальное окно «Регистрация» и предотвратить исходное действие.
Эти действия могут быть запущены с помощью ng-click или любой другой директивы «связывания кликов» (например, «modal-toggle»).
Итак, я нашел это решение: https://stackoverflow.com/a/16211108/2719044
Это довольно круто, но работает только с ng-click.
Сначала я хотел сделать свойство "терминал" директивы динамическим, но не смог этого сделать.
Итак, идея заключалась в том, чтобы установить для «терминала» значение true и вручную предотвратить действие щелчка по умолчанию в директиве.
Вот мой ДОМ
<!-- This can work with terminal:true and scope.$eval(attrs.ngClick) (see example above) -->
<div user-needed ng-click="myAction()">Do it !</div>
<!-- This doesn't work. I can't manage to prevent the modal-toggle to be executed -->
<div user-needed modal-toggle="my-modal-id-yey">Show yourself modal !</div>
И моя директива (ы) (которые не работают...)
// First try (with terminal:true)
app.directive('userNeeded', function() {
return {
priority: -100,
terminal: true,
restrict: 'A',
link: function(scope, element, attrs) {
element.bind('click', function(e) {
if(isRegistered()) {
// Here we do the action like scope.$eval or something
}
});
}
};
});
// Second try (with stopPropagation)
app.directive('userNeeded', function() {
return {
priority: -100
restrict: 'A',
link: function(scope, element, attrs) {
element.bind('click', function(e) {
if(!isRegistered()) {
e.stopPropagation();
}
});
}
};
});
...И именно поэтому я здесь. Любая идея ?
Большое спасибо.
resolve
при определении нового маршрута). И это ограничение может быть обычным пользователем/администратором.. Но вам не обязательно перенимать их шаблон ;) это просто очень хороший пример того, что можно сделать. - person Jscti   schedule 15.04.2014