为$ confirm对话框提供模板

时间:2016-04-07 12:23:03

标签: javascript angularjs 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()调用的模板,这不是我想要的。

我认为这样做的方法是使用提供商将模板网址附加到应用中的每个$ confirm调用,但我不确定该怎么做。

如何为$ confirm创建提供程序并为每次调用添加templateUrl参数?

1 个答案:

答案 0 :(得分:0)

想出来:

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);
};

现在,当使用数据和/或设置调用$ confirm()时,它将应用我的自定义模板,除非调用者指定了