我有两个JQuery小部件,一个是'main'小部件,另一个可以被认为是小孩。孩子处理收集主要要求的特定数据。 main用于AJAX请求。因此,main有一组发送到服务器的选项。其中一个选项也是孩子的选择。
为了更清楚,我有一个主要的小部件,有几个选项。然后它创建并附加子窗口小部件。此子窗口小部件有一个附加选项,需要在发送AJAX请求之前填充主窗口小部件。为了使这项工作,我传递给孩子:this.options.someArray
这很好用,但是当在子窗口小部件中对该数组进行更改时,它们永远不会返回到主窗口小部件。这意味着AJAX请求在这个地方发送一个空数组。我该如何解决这个问题?
[如果这不是标准行为 - 我可以发布代码示例]
主Widget的代码示例:
$.widget('be.deckEditor', {
options: {
deck: { name: "", id: 0, cards: [], tags: [] }
},
创建子窗口小部件的代码:
tagEditBox = $('<div>');
tagEditBox.tagEditor({tags:this.options.deck.tags});
小工具_Init代码:
_init: function () {
this.options.tags = ['ace','two'];
},
答案 0 :(得分:0)
如果您希望“_init”代码重新设置“标记”内容,则不要将其设置为引用全新数组:
_init: function () {
this.options.tags[0] = 'ace';
this.options.tags[1] = 'two';
this.options.tags.length = 2;
},
您可以编写一个函数来使目标数组包含另一个数组包含的内容;我不认为有一个内置,但我不记得曾经想要找到这样的东西:
function arrayCopy(src, dest) {
for (var i = 0; i < src.length; ++i) dest[i] = src[i];
dest.length = src.length;
}
(只有在您希望目的地为完整副本,长度和全部时才需要最后一行。)