我想要一个图形容器,我可以添加和删除我的自定义小部件,我可以设置一个排序功能,在这些操作发生时自动应用。
Dojo中是否有合适的物品我错过了?或者也许我没有正确地考虑这个问题?
如果没有,是否有最小工作自定义容器小部件的示例等?
答案 0 :(得分:1)
不要认为确实存在 - 标准组件的排序功能如何知道,当容器可以包含任何窗口小部件类型时,它应该使用哪些参数来加权顺序?
使用布局小部件扩展程序将是您最好的选择imho。它们每个都有一个添加孩子的功能,遵循这个原型:
addChild(/*Object*/ dijit, /*Integer?*/ insertIndex)
dijit.layout.StackContainer
是一个很好的起点,它继承自dijit._Container
(和dijit.layout._LayoutWidget
)。因此,您选择何时调用覆盖的扩展功能。
dojo.declare("my.Container", [dijit._Container], {
getSortOrder : function(newDijit) {
var newIndex = -1; ??
// something to work with
var currentChildren = this.getChildren();
var currentDescendants = this.getDescendants();
return newIndex;
},
addChild: function(dijit, index) {
// figure out index
arguments[1] = this.getSortOrder(dijit);
this.inherited(arguments);
}
});
但请注意,layoutwidgets有更多选择顺序,也可以像bordercontainer的region参数一样定位。
答案 1 :(得分:1)
使用SitePen的dgrid,然后使用Editor类型的列定义List小部件。将自定义窗口小部件发送到编辑器的参数。 dgrid的List小部件应该能够像基于您的数据的网格一样进行排序,并且Editor列应该能够在List的项目内容中显示您想要的任何内容。
如果你需要什么,我会在附近。运气,