繁体   English   中英

传递两个不同参数的更短方法

[英]Shorter way to pass two different parameters

不好意思的标题很抱歉,不确定如何描述我在做什么,我的代码是这样的:

        if (is_title === 'false') {
            $elem.popover({
                placement: 'auto',
                trigger: 'hover',
                html: true,
                delay: {"show": 0, "hide": 100},
                container: $elem,
                animation: true,
                template: '<div class="popover main_block popover_tweaks" style="width: 500px;" role="tooltip"><div class="arrow"></div><div class="popover-content"></div></div>'
            });
        } else {
            $elem.popover({
                placement: 'auto',
                trigger: 'hover',
                html: true,
                delay: {"show": 0, "hide": 100},
                container: $elem,
                animation: true,
                template: '<div class="popover main_block popover_tweaks" style="width: 500px;" role="tooltip"><div class="arrow"></div><div class="block_header"><h2 class="popover-title"></h2></div><div class="popover-content"></div></div>'
            });

        }

我是(想)php开发人员,所以我尝试了一下(认为它可以像数组一样工作,我会添加最后一个参数,但是没有用)

        $elem.popover({
                placement: 'auto',
                trigger: 'hover',
                html: true,
                delay: {"show": 0, "hide": 100},
                container: $elem,
                animation: true,
            });
        if (is_title === 'false') {
            $elem.popover({

                template: '<div class="popover main_block popover_tweaks" style="width: 500px;" role="tooltip"><div class="arrow"></div><div class="popover-content"></div></div>'
            });
        } else {
            $elem.popover({

                template: '<div class="popover main_block popover_tweaks" style="width: 500px;" role="tooltip"><div class="arrow"></div><div class="block_header"><h2 class="popover-title"></h2></div><div class="popover-content"></div></div>'
            });

        }

我的问题是,有没有一种方法可以只更改模板参数,而无需重复其他所有参数?

您正在传递对象文字。 您可以先使用公共部分对其进行初始化,然后根据逻辑添加特定部分。

例如:

var param = {
            placement: 'auto',
            trigger: 'hover',
            html: true,
            delay: {"show": 0, "hide": 100},
            container: $elem,
            animation: true,
        }

if (is_title === 'false') {
    param.template = '<div class="popover main_block popover_tweaks" style="width: 500px;" role="tooltip"><div class="arrow"></div><div class="popover-content"></div></div>';
} else {
    param.template =  '<div class="popover main_block popover_tweaks" style="width: 500px;" role="tooltip"><div class="arrow"></div><div class="block_header"><h2 class="popover-title"></h2></div><div class="popover-content"></div></div>';
}
$elem.popover(param);

或者,您可以在对象文字中使用条件,因此您可以执行以下操作:

$elem.popover({
    placement: 'auto',
    trigger: 'hover',
    html: true,
    delay: {"show": 0, "hide": 100},
    container: $elem,
    animation: true,
    template: is_title ? 
        '<div class="popover main_block popover_tweaks" style="width: 500px;" role="tooltip"><div class="arrow"></div><div class="block_header"><h2 class="popover-title"></h2></div><div class="popover-content"></div></div>' 
        :'<div class="popover main_block popover_tweaks" style="width: 500px;" role="tooltip"><div class="arrow"></div><div class="popover-content"></div></div>'
        });

只需使用条件运算符:

        $elem.popover({
            placement: 'auto',
            trigger: 'hover',
            html: true,
            delay: {"show": 0, "hide": 100},
            container: $elem,
            animation: true,
            template: (is_title === 'false' ? '<div class="popover main_block popover_tweaks" style="width: 500px;" role="tooltip"><div class="arrow"></div><div class="popover-content"></div></div>' : '<div class="popover main_block popover_tweaks" style="width: 500px;" role="tooltip"><div class="arrow"></div><div class="block_header"><h2 class="popover-title"></h2></div><div class="popover-content"></div></div>')
        });

您可以先创建一个选项对象,然后对模板使用三元运算符。 就像是:

`var opts = {template: title === false ? '<div>template 1</div>' : '<div>template 2</div>'};`

然后打电话

popover(opts)

很抱歉格式化!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM