如何在FuelUX树引导插件中显示嵌套数据项
How to display nested data items in FuelUX tree bootstrap plugin
我正试图实现FuelUX树插件,我一直遵循的例子到目前为止,但我需要一个嵌套结构。我假设树插件能够处理嵌套的孩子?这是正确的吗?
var treeDataSource = new TreeDataSource({
data: [
{ name: 'Test Folder 1', type: 'folder', additionalParameters: { id: 'F1' },
data: [
{ name: 'Test Sub Folder 1', type: 'folder', additionalParameters: { id: 'FF1' } },
{ name: 'Test Sub Folder 2', type: 'folder', additionalParameters: { id: 'FF2' } },
{ name: 'Test Item 2 in Folder 1', type: 'item', additionalParameters: { id: 'FI2' } }
]
},
{ name: 'Test Folder 2', type: 'folder', additionalParameters: { id: 'F2' } },
{ name: 'Test Item 1', type: 'item', additionalParameters: { id: 'I1' } },
{ name: 'Test Item 2', type: 'item', additionalParameters: { id: 'I2' } }
],
delay: 400
});
到目前为止,它似乎是将顶级项加载到打开的文件夹中,而不是将嵌套的数据项加载到文件夹中。这也是他们网站上的演示所做的,但这似乎不是理想的交互。有人能确认这是预期行为吗?谁能指出我的代码,他们已经创建了一个嵌套的数据树使用这个插件?我是不是真的遗漏了什么?
实际上我正在写一篇关于这个问题的博文。
我开发的解决方案不适合胆小的人。问题是folder
对象不支持用子数据实例化。此外,增加孩子也不是一件容易的事。我做了一个快速的小提琴,你可以从中挑选出一个如何实现你的目标的想法。我使用这个相同的解决方案,只是我的addChildren
函数通过AJAX调用到MVC路由,并返回一个JSON对象来动态地填充孩子。
你可以从字面上,复制和粘贴代码从我的小提琴,并开始使用开箱即用的addChildren
函数。
我很抱歉缺乏关于这方面的文档-它肯定需要改进。
这个想法是在实例化树控件时提供dataSource
,并且数据源应该具有签名(选项,回调)的data
函数。data
函数将在控件初始化时调用,以填充根级数据,并将在单击文件夹时再次调用。
data
函数的任务是查看选项参数,该参数是由单击的文件夹上的jQuery.data()
填充的,并使用该文件夹的数据进行响应。特殊情况是初始根文件夹数据,其中的选项是从控件的根div上的任何jQuery.data()填充的,该div可能存在,也可能不存在。
文件夹上的jQuery.data()是从您在data
函数的回调中提供的对象数组中填充的。您可以在这个示例https://github.com/ExactTarget/fuelux/blob/master/index.html#L184-L189中看到,有一个名为additionalParameters
的属性,但实际上您可以提供所需的name
和type
之外的任何其他属性,以便稍后(下次调用data
函数时)使用,以确定单击了哪个文件夹并返回该文件夹的数据。
我们当前的示例为每个文件夹返回相同的静态数据,这不是最好的示例,所以我确实希望通过自己创建教程或链接到一个,如果有人比我先找到它来改善这种情况。
继Adam的回答之后,这里有一个例子,似乎可以达到你想要的效果。
数据源的data函数可以检查是否有"子"数据通过选项传递:
DataSource.prototype = {
columns: function () {
return this._columns;
},
data: function (options, callback) {
var self = this;
if (options.search) {
callback({ data: self._data, start: start, end: end, count: count, pages: pages, page: page });
} else if (options.data) {
callback({ data: options.data, start: 0, end: 0, count: 0, pages: 0, page: 0 });
} else {
callback({ data: self._data, start: 0, end: 0, count: 0, pages: 0, page: 0 });
}
}
};
在bootp演示:http://www.bootply.com/60761
- 高亮显示与数组字符串一起使用时文本插件中断
- 使用Booklet Jquery插件,我如何验证最后一页是否显示
- jQuery插件与其他基本的显示/隐藏功能冲突
- Wordpress cforms插件CAPTCHA图像未显示
- 动态添加facebook社交插件时不会显示
- 用于突出显示文本的JQuery/JavaScript插件
- 如何在 elfinder(一个 jquery 文件管理器插件)中只显示文件夹列表
- youmax插件显示多个频道播放列表
- 使用PapaParse插件显示CSV标头
- 如何使用Unslide JQuery插件显示上一个和下一个
- Javascript图形插件显示值,日期明智,周明智和月明智
- Jquery插件显示$.pluginName未定义
- 用jstree插件显示选中的树
- jQuery插件显示/隐藏DIV
- 可能在Bootstrap对话框js插件显示页面的一部分
- 是否有一个jQuery插件显示为'title'在HTML标签中
- 如何使用打字机插件显示许多
- jQuery旋转木马插件显示不需要的边框
- 如何使用ColorBox jQuery插件显示HTML页面
- 使用jquery验证插件显示预定义的HTML元素