我正在尝试在AngularJS中创建一个简单的确认弹出框。我已经使用AngularUI添加了很多其他组件,这就是为什么它似乎是自然的选择来扩展。
我已经在plnkr中创建了一个示例,但实质上我想能够像这样简单地向按钮添加确认...
<button confirm="Are you sure you want to delete what ever" confirm-func="deleteThing()" confirm-placement="right" confirm-title="Are you sure?" class="btn btn-default">Delete? </button>
这段代码可以使用我的自定义模板,生成一个包含取消或确认按钮的弹出框。但我需要能够通过“confirm-func”属性传递任何要在确认按钮点击时运行的函数。无论我如何尝试,都无法使其正常工作。下面是扩展AngularUI的指令:
angular.module('plunker', ['ui.bootstrap']).directive( 'confirmPopup', function () {
return {
restrict: 'A',
replace: true,
scope: { title: '@', content: '@', placement: '@', animation: '&', isOpen: '&', func: '&' },
templateUrl: 'confirmPopup.html',
link: function ($scope, element, attrs) {
$scope.confirm = function(){
$scope.func();//here is where we want to run the function, but it does not work!
$scope.$parent.tt_isOpen = false;
}
$scope.cancel = function(){
$scope.$parent.tt_isOpen = false;
}
}
};
})
.directive( 'confirm', [ '$tooltip', function ($tooltip) {
return $tooltip( 'confirm', 'confirm', 'click' );
}]);
附带Plunkr示例:http://plnkr.co/edit/W9BWMc3x5khuaMEL7lp1?p=preview

$tooltip服务并没有旨在打开其实现并允许扩展。相反,它是在popup和tooltip(以及可能的其他指令)之间进行内部代码共享的好方法。不幸的是,我没有看到任何简单直接的方法来做到这一点,除非将一个编译后的元素传递给content,如$compile(toolTipContent)(scope)。然而,这需要对angular.ui进行重大更改。 - musically_ut