我有一个插件,它有一些选项,例如
$.growl.default_options = {
allow_dismiss: true,
position: {
from: "top",
align: "right"
},
offset: 20,
spacing: 10,
z_index: 1031,
fade_in: 400,
delay: 5000,
template: {
icon_type: 'class',
container: '<div class="col-xs-10 col-sm-10 col-md-3 alert">',
dismiss: '<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>',
title: '<strong>',
title_divider: '',
message: ''
}
});当我使用以下选项调用程序时
$.growl("I am a Message!", {
position: {
align: 'left'
},
template: {
container: '<div class="col-xs-10 col-sm-10 col-md-3 alert">'
}
});在插件中,我执行以下操作
options = $.extend({}, $.growl.default_options, options);而且比options更重要
$.growl.default_options = {
allow_dismiss: true,
position: {
align: "right"
},
offset: 20,
spacing: 10,
z_index: 1031,
fade_in: 400,
delay: 5000,
template: {
container: '<div class="col-xs-10 col-sm-10 col-md-3 alert">'
}
});为什么template只有一个变量?
发布于 2014-01-22 13:46:12
您需要一个深度(递归)扩展:
options = $.extend(true, {}, $.growl.default_options, options);来自the documentation:
默认情况下,$.extend()执行的合并不是递归的;如果第一个对象的属性本身就是一个对象或数组,那么它将被第二个或后续对象中具有相同键的属性完全覆盖。这些值不合并。通过检查香蕉的价值,可以在下面的例子中看到这一点。但是,通过为第一个函数参数传递true,对象将被递归合并。
https://stackoverflow.com/questions/21284614
复制相似问题