- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我有一个工作正常的 FancyTree。当用户移动到另一个页面时,我想保持树的状态。我正在点击此链接来实现这一目标; http://wwwendt.de/tech/fancytree/demo/sample-ext-persist.html#
我正在使用 Ajax 加载所有页面,当我使用 Ctrl + F5
重新加载网站并导航到带有树的页面时,将从本地存储加载上一个状态。这很好。
当我刷新整个页面时:
但是当我使用ajax转到另一个页面并返回到带有树的页面时,它不会加载上一个状态。
当我使用 Ajax 加载 View 时:
这是我的代码:
var glyph_opts = {
map: {
doc: "fa fa-truck",
docOpen: "fa fa-truck",
checkbox: "glyphicon glyphicon-unchecked",
checkboxSelected: "glyphicon glyphicon-check",
checkboxUnknown: "glyphicon glyphicon-share",
dragHelper: "glyphicon glyphicon-play",
dropMarker: "glyphicon glyphicon-arrow-right",
error: "glyphicon glyphicon-warning-sign",
expanderClosed: "glyphicon glyphicon-plus-sign",
expanderLazy: "glyphicon glyphicon-plus-sign",
expanderOpen: "glyphicon glyphicon-minus-sign",
folder: "glyphicon glyphicon-folder-close",
folderOpen: "glyphicon glyphicon-folder-open",
loading: "glyphicon glyphicon-refresh"
}
};
$("#tree").fancytree({
extensions: ["glyph", "filter", "persist"],
persist: {
expandLazy: true,
// fireActivate: true, // false: suppress `activate` event after active node was restored
overrideSource: true, // true: cookie takes precedence over `source` data attributes.
store: "auto" // 'cookie', 'local': use localStore, 'session': sessionStore
},
source: $.ajax({
url: '@Url.Action("CompaniesTree", "Dashboard")',
type: "GET",
dataType: "json"
}),
activate: function (event, data) {
if (data.node.data.GroupType === 4) {
var model = {
key: data.node.key,
data: data.node.data
};
}
return true;
},
iconClass: function (event, data) {
if (data.node.data.GroupType === 1) {
return "fa fa-desktop";
}
if (data.node.data.GroupType === 2) {
return "fa fa-sitemap";
}
},
selectMode: 2,
init: function (event, data) {
data.tree.debug(event.type, data);
},
restore: function (event, data) {
data.tree.debug(event.type, data);
},
loadChildren: function (event, data) {
data.node.debug(event.type, data);
},
quicksearch: true,
filter: {
//http://wwwendt.de/tech/fancytree/demo/sample-ext-filter.html#
//autoApply: true, // Re-apply last filter if lazy data is loaded
counter: false, // Show a badge with number of matching child nodes near parent icons
fuzzy: false, // Match single characters in order, e.g. 'fb' will match 'FooBar'
hideExpandedCounter: true, // Hide counter badge, when parent is expanded
mode: "hide" // Grayout unmatched nodes (pass "hide" to remove unmatched node instead)
},
glyph: glyph_opts,
lazyLoad: function (event, data) {
var model = {
key: data.node.key,
data: data.node.data
};
$.ajax({
url: '@Url.Action("ChildItems", "Dashboard")',
type: "POST",
async: false,
contentType: "application/json",
data: JSON.stringify(model),
success: function (response) {
data.result = response;
}
});
}
});
var tree = $("#tree").data("ui-fancytree").getTree();
我什至检查了 session 存储,发现 Fancy Tree 状态的数据已保存 - 控制台中没有错误
最佳答案
简短回答:使用 cookiePrefix配置选项。
说明:
发生这种情况是因为每次加载页面时,您都会创建一个新的 FancyTree 实例。 Fancytree 插件会跟踪它创建的所有实例,为每个新实例分配一个唯一的 ID 和命名空间。来自 fancytree 源代码:
function Fancytree(widget) {
// some other code ...
this._id = $.ui.fancytree._nextId++;
this._ns = ".fancytree-" + this._id; // append for namespaced events
// some other code ...
}
默认情况下,持久化插件使用的命名空间是fancytree-[instance-ID]-
。因此,对于每个新实例,它都会设置自己的 cookie。幸运的是,您还可以通过配置选项 cookiePrefix 手动设置要使用的命名空间。 :
$("#tree").fancytree({
extensions: ["glyph", "filter", "persist"],
persist: {
cookiePrefix: 'fancytree-1-',
expandLazy: true,
overrideSource: true, // true: cookie takes precedence over `source` data attributes.
store: "auto" // 'cookie', 'local': use localStore, 'session': sessionStore
},
// rest of the config ...
});
这样,持久性插件将始终使用相同的命名空间来设置和获取 cookie。
关于jquery - FancyTree - 仅在页面刷新后加载持久状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33147617/
如果我单击我的 fancytree 菜单节点,它们会激活出现在菜单旁边的对话框。这些具有使对话框关闭的取消按钮。但是,当我再次单击相同的菜单项(节点)时,不会再次出现相同的对话框(如我所愿),我认为是
如果我单击我的 fancytree 菜单节点,它们会激活出现在菜单旁边的对话框。这些具有使对话框关闭的取消按钮。但是,当我再次单击相同的菜单项(节点)时,不会再次出现相同的对话框(如我所愿),我认为是
有人已经尝试过了吗,我的意思是有人已经为此制作了第 3 方/扩展或补丁吗?ajax XHR 对象支持读取 XML 数据,但我想 Fancytree 需要一些更改或扩展来支持这种格式吗? 最佳答案 您可
我正在使用花式树查看器。 https://github.com/mar10/fancytree 如何根据事件动态改变节点的图标。 最佳答案 下面的代码将在延迟加载后遍历所有子节点,并更改子节点的图标(
嗨,我刚刚开始使用这个 jquery 树。并且想知道是否可以设置任何属性以使连接线始终可见。 最佳答案 在将连接线设置为始终可见的选项中没有可用的属性,但是您可以使用 fancytree-contai
我已经查看了 fancytree 的文档和示例几个小时,像海绵一样吸收了 fancytree 的所有优点,但我似乎不知道如何使用 API 调用首先使用文件夹对我的 fancytree 对象进行排序。我
我有一个 fancytree 实现,其中每个父节点都有一个可以选择的子节点。在用户选择了特定的 child 之后,她可以保存她的选择和设置,以便她以后可以回来使用。 除了我对以前保存的数据进行初始加载
我有一个包含不同选项的组合框,每个选项都会在屏幕上显示一个花式树。 我进行了 ajax 调用来获取 fancytree 的源代码,但它没有重新加载,并且一次又一次地显示相同的选项。 部分代码: $.a
我想知道是否有办法扩展 Fancytree 提供的导航,例如强制 delete , cut , copy或paste当我按 Delete 时,会发生 contextMenu 中的方法, ctrl+x
我正在使用fancytree在我的项目中,我想以编程方式触发节点的延迟加载,并且还想添加回调。我怎样才能做到这一点? 最佳答案 为了加载惰性节点,您可以调用 node.load() : node.lo
# this is reference picture # 我使用复杂表 $("#tree").fancytree({ checkbox: true, ....... source: { url: "
我有一个日记应用程序,其中有一个 fancytree,显示登录用户的日记条目。在该树下方,我有另一个 fancytree,上面有一个下拉列表,可让您选择其他用户并浏览他们的日记条目。一旦您选择了一个用
我有一个日记应用程序,其中有一个 fancytree,显示登录用户的日记条目。在该树下方,我有另一个 fancytree,上面有一个下拉列表,可让您选择其他用户并浏览他们的日记条目。一旦您选择了一个用
所以我有一个工作正常的 FancyTree。当用户移动到另一个页面时,我想保持树的状态。我正在点击此链接来实现这一目标; http://wwwendt.de/tech/fancytree/demo/s
我是 Jquery 的 Fancytree 插件的新手。 我想延迟加载树的节点。 我无法从不同来源加载这些节点。 两个节点都从同一单一源获取数据。我希望节点“Lazy Folder1”应该从 exam
我正在与 fancytree 合作。 如何在 JavaScript 中重新加载节点后打开节点(惰性)? 代码: node.load(forceReload = true); node.setExpan
https://github.com/mar10/fancytree 基本上,这棵树在展开/折叠时添加和删除子元素。除非伸展树(Splay Tree),否则我无法修改子项的 DOM 元素。 我在文档中
我正在尝试在拖放事件后为节点定义新的父 ID。 假设您将节点拖到除根以外的任何级别,此功能可以正常工作 dragDrop: function(node, data) {
我正在使用 FancyTree 插件来显示几个文件名。由于我有一个用于树插件的大型数据集,我想知道 API 是否支持树显示中的分页。我查看了 API 但找不到合适的东西。有什么办法可以解决吗? 最佳答
我想删除选定的节点并将所有子节点移动到它的位置。我使用代码: ref = $('#tree').fancytree("getTree"), searchIDs = ref.getSelectedNod
我是一名优秀的程序员,十分优秀!