为 $confirm 对话框提供模板
Providing a template for $confirm dialogs
我正在使用 angular-confirm 在我的应用程序的很多地方显示确认消息。例如:
$confirm({
text: 'content',
title: 'title text',
ok: 'Yes',
cancel: 'No'})
.then(function() {
doSomething();
});
我想全局更改这些对话框在应用程序中的显示布局。我知道 angular-confirm 允许您像这样进行全局更改:
$confirmModalDefaults.templateUrl = 'path/to/your/template';
然而,这也覆盖了所有 $modal.open() 调用的模板,这不是我想要的。
我认为实现此目的的方法是使用提供程序将模板 url 附加到应用程序中的每个 $confirm 调用,但我不确定具体如何操作。
如何为 $confirm 创建一个提供程序并在每次调用时附加一个 templateUrl 参数?
想通了:
function config($provide) {
$provide.decorator('$confirm', confirmProvider);
}
/* @ngInject */
function confirmProvider($delegate) {
return function (data, settings) {
if (settings && !settings.template && !settings.templateUrl) {
settings.template = '<div>my confirm content</div>';
} else {
settings = {
template: '<div>my confirm content</div>'
}
}
return $delegate(data, settings);
};
现在,当使用数据 and/or 设置调用 $confirm() 时,它将应用我的自定义模板,除非它是由调用者指定的
我正在使用 angular-confirm 在我的应用程序的很多地方显示确认消息。例如:
$confirm({
text: 'content',
title: 'title text',
ok: 'Yes',
cancel: 'No'})
.then(function() {
doSomething();
});
我想全局更改这些对话框在应用程序中的显示布局。我知道 angular-confirm 允许您像这样进行全局更改:
$confirmModalDefaults.templateUrl = 'path/to/your/template';
然而,这也覆盖了所有 $modal.open() 调用的模板,这不是我想要的。
我认为实现此目的的方法是使用提供程序将模板 url 附加到应用程序中的每个 $confirm 调用,但我不确定具体如何操作。
如何为 $confirm 创建一个提供程序并在每次调用时附加一个 templateUrl 参数?
想通了:
function config($provide) {
$provide.decorator('$confirm', confirmProvider);
}
/* @ngInject */
function confirmProvider($delegate) {
return function (data, settings) {
if (settings && !settings.template && !settings.templateUrl) {
settings.template = '<div>my confirm content</div>';
} else {
settings = {
template: '<div>my confirm content</div>'
}
}
return $delegate(data, settings);
};
现在,当使用数据 and/or 设置调用 $confirm() 时,它将应用我的自定义模板,除非它是由调用者指定的