Так что я пытаюсь реализовать пользовательский флажок подтверждения с помощью Angular. В идеале я просто хотел бы добавить атрибут, чтобы включить функциональность. Пример:angularjs custom confirm box
<button type="button" ng-click="delete(foo)">Delete</button> -> <button type="button" ng-click="delete(foo)" ng-confirm="Are you sure you want to delete this foo?">Delete</button>
(Foo находится внутри нг-повтора ... Foo в fooList ..)
Таким образом, все проблемы, которые я имею вращаться вокруг связывая событие щелчка, что обычно случается с другой кнопка. У меня есть отдельная директива «confirmBox», которая создаст мою модальную (не используя загрузку) и обработает все показания/скрытие/etc.
То, что я в настоящее время использую требует от меня, чтобы изменить мою функциональность нг-клик, которую я действительно хочу, чтобы уйти от:
Текущая реализация:
<button ... ng-click="confirm('Are you sure you want to delete this foo?, 'delete', foo)">Delete</button>
var confirmModule = angular.module('confirm', []);
confirmModule.run(function($rootScope) {
$rootScope.confirm = function(text, func, obj) {
$rootScope.$broadcast('confirm', func, obj, text);
};
});
confirmModule.directive('confirmBox', function($parse) {
return {
restrict: 'A',
template: myModalTemplate,
link: function(scope, element, attrs){
element.hide();
var noBtn = element.find("[name='no']");
noBtn.bind("click", function() {
element.hide();
});
scope.$on("confirm", function(event, func, obj, text) {
var yesBtn = element.find("[name='yes']");
element.show();
yesBtn.unbind("click").bind("click", function() {
scope[func](obj);
});
});
}
}
});
Кто-нибудь есть какие-нибудь идеи? Я начал с добавления директивы для кнопки, а затем открепления события клика, так что ng-click
не срабатывает. Затем я остаюсь со строкой 'delete(foo)'
из атрибута ng-click
, который можно выполнить с помощью $parse(attrs.ngClick)(scope)
, но я не знаю, как связать это с нажатием кнопки отдельных директив.
Редактировать: Вот скрипка с моей текущей попыткой реализации. Проблема заключается в том, что переменная, передаваемая функции, всегда не определена.
Edit2: Обновленные реализации, однако я не особенно нравится, как она связывает две директивы вместе пристреливать другие директивы элементов.
Этот довольно близкий, но вроде прыжки, потому что он изменяет свиток вместо выполнения наложения. – Demodave