![](/img/trans.png)
[英]Why does Input not storing inputted data in modelValue Prop
[英]Why function does not receive inputted JSON data?
我有一个自定义的jQuery插件,正在处理JSON的一些问题。
我正在使用jQuery插件模板来创建它,并在顶部设置默认属性,如下所示:
// Create the defaults once
var pluginName = "customHighlight",
defaults = {
actions: [{"test_action":"Test action"}],
position: "left"
};
问题是当我尝试在插件初始化时设置自己的属性时,如下所示:
$('div,p').customHighlight({
actions: [{"1_action":"1 action"}]
});
我什么也没经过。 我是在犯一个我没有在这里发现的男生错误吗?
不清楚“什么都不会发生”是什么意思。 您很可能在实现样板的过程中犯了一个错误,并且没有显示任何相关代码,因此我们无法为您指出这一点,但是设置中存在一个常规设计缺陷。
如果正确使用样板,则插件的settings
属性将如下所示:
{
actions: [{"1_action":"1 action"}],
position: "left"
}
我假设您期望actions
是一个包含两个对象的数组。 结果是因为您正在为actions
指定一个值,所以在Plugin.prototype.init
中使用的$.extend
不使用默认值。
您可以通过更改init
这一行来解决此问题:
this.settings = $.extend( {}, defaults, options );
对此:
this.settings = $.extend( true, {}, defaults, options );
// ^ "deep" param
设置为deep
表示$.extend
应该递归应用。 但这不适用于数组,因此您还需要确保actions
是一个对象:
var pluginName = "customHighlight",
defaults = {
actions: {"test_action":"Test action"},
position: "left"
};
现在,这样调用customHighlight
:
$('div,p').customHighlight({
actions: {"1_action":"1 action"}
});
将产生一个如下所示的settings
对象:
{
actions: {
"test_action": "Test action"
"1_action": "1 action"
},
position: "left"
}
我意识到设置对象是我需要检索的,而不是我在代码中检索的默认对象。 我在这里没有提供足够的信息,无法对这样的成功答案表示歉意。 但是问题现在已经解决。
干杯
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.