0

我有一个“portlet”风格的仪表板,它使用 jQuery UI“可排序”交互,我想在页面加载时读回本地存储的状态。因此,当我在页面上移动 portlet 时,当我离开并返回页面时,我希望它们位于同一位置。我需要在客户端(“本地首选项”)执行此操作,而不是将状态更改推送到服务器。

在这里看到这个问题:jQuery UI Sortable and Cookie

虽然它有一些很好的指示,但我不禁想知道我是否遗漏了一些更基本的东西......已经有几年了,也许有更好的包含工具。

我已经得到了这个更新功能的地方:

update : function(e,ui) {
  // where "shortname" is a unique string identified elsewhere on the page
  localConfig.layout[shortname] = [];
  var containers = $('.widgetContainer');
  containers.each(function(){
    localConfig.layout[shortname].push($(this).sortable("toArray"));
  });
}

这会产生一个数组数组,因此:

[["someWidget", "anotherWidget"],["widgetInOtherColumn", "anotherWidgetInOtherColumn"]]

我不会对代码感到厌烦,但我确信我可以在 localStorage 中设置它(如果不可用,则为 cookie)。所以存储它会被添加到上面的代码中。

真正的问题很简单:

是否有使用 jQuery UI API 读取我的数组数组的简单或内置机制?还是我必须“手动”进入,抓取数组并遍历它们以移动 DOM 节点?我的意思是上面的代码甚至不需要留下来。jQuery UI "Tabs" 小部件只有一个可以传递的参数(cookie: {args}……不知道为什么它不在 API 中,但它可以工作!);sortable 是否有类似的东西包含在 jQUI 中或作为插件?

如果只能通过编写新方法来实现,那么最有效的方法是什么?留给我自己的设备,我会抓取所有节点,将它们移动到某个存储容器中,然后通过迭代器将它们移回它们需要的位置。在我看来,切换元素顺序的方式肯定比这更简单。

谢谢!

4

0 回答 0