使用对象覆盖jquery ui小部件字符串选项
我希望jQueryUI小部件选项在默认情况下是字符串,但我希望它能够被对象覆盖。当我这样做时,我实际上以某种奇怪的方式将字符串转换为一个对象,然后用我传入的任何对象进行扩展使用对象覆盖jquery ui小部件字符串选项,jquery,jquery-ui,jquery-widgets,Jquery,Jquery Ui,Jquery Widgets,我希望jQueryUI小部件选项在默认情况下是字符串,但我希望它能够被对象覆盖。当我这样做时,我实际上以某种奇怪的方式将字符串转换为一个对象,然后用我传入的任何对象进行扩展 $.widget("ui.test", { options: { anOption: "a,b,c" }, _create: function() { console.log(this.options); } }); $('div').test({
$.widget("ui.test", {
options: {
anOption: "a,b,c"
},
_create: function() {
console.log(this.options);
}
});
$('div').test({
anOption: {
a: 'A'
}
});
如果我跳过将选项传递给小部件,它将在_create方法中作为字符串接收。如果我进入一个物体,奇怪的行为就会发生。在chromes js控制台日志中,我得到了这个,这不是我想要的
Object
anOption: Object
0: "a"
1: ","
2: "b"
3: ","
4: "c"
a: "A"
我如何解决这个问题
jsiddle:如果在创建小部件后更改该选项,它将用所需的对象覆盖该选项。这可以接受吗
$.widget("ui.test", {
options: {
anOption: "a string"
},
_create: function() {
console.log(this.options.anOption);
}
});
$('div').test({});
$('div').test("option", "anOption", {
a: "option1",
b: "option2"
});
var anOption = $('div').test("option", "anOption");
console.log(anOption);
如果在创建小部件后更改该选项,它将用所需的对象覆盖该选项。这可以接受吗
$.widget("ui.test", {
options: {
anOption: "a string"
},
_create: function() {
console.log(this.options.anOption);
}
});
$('div').test({});
$('div').test("option", "anOption", {
a: "option1",
b: "option2"
});
var anOption = $('div').test("option", "anOption");
console.log(anOption);
这是一个最近修复的错误:
这是一个最近修复的错误:
它将字符串转换为对象,每个字符根据其索引成为属性。你想让它生产什么?重写
anOption
如下anOption:{a:“a”}
小部件选项功能的工作原理如下<代码>var s=“字符串”;log($.extend({},s,{a:“new”}));代码>我在jQueryUI本身,即可调整大小的小部件中也遇到了这个问题:它将字符串转换为一个对象,每个字符根据其索引变成一个属性。你想让它生产什么?重写anOption
如下anOption:{a:“a”}
小部件选项功能的工作原理如下<代码>var s=“字符串”;log($.extend({},s,{a:“new”}));代码>我在jQueryUI本身,即可调整大小的小部件中也遇到了这个问题:我不能接受这个解决方案,尽管感谢您给我一个可能的解决方案。问题是,我无法控制其他开发人员如何使用这个小部件,我更希望能够在第一次初始化时让所有选项都起作用。明白。我想我会发布一个可能的解决方法。谢谢你给我回复解释!我认为这是很好的反馈!我不能接受这个解决方案,不过谢谢你给我一个可能的解决方案。问题是,我无法控制其他开发人员如何使用这个小部件,我更希望能够在第一次初始化时让所有选项都起作用。明白。我想我会发布一个可能的解决方法。谢谢你给我回复解释!我认为这是很好的反馈!