Някои действия в моето приложение Angular изискват потребителят да бъде регистриран. Ако потребителят не е регистриран, искаме да покажем „Модална регистрация“ и да предотвратим първоначалното действие.
Тези действия могат да бъдат задействани чрез ng-click или всяка друга директива за „обвързване с щракване“ (например тази „modal-toggle“).
Така че намерих това решение: https://stackoverflow.com/a/16211108/2719044
Това е доста готино, но работи само с ng-click.
Първо исках да направя свойството "терминал" на директивата динамично, но не успях да го направя.
Така че идеята беше да се зададе "терминал" на истина и ръчно да се предотврати действието при щракване по подразбиране в директивата.
Ето го моят DOM
<!-- 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