使用 dGrid 删除行时未解析 Dijit 多个小部件 (dgrid.io)
Dijit multiple widgets not parsed when row deleted with dGrid (dgrid.io)
我将 dGrid 0.4.1-dev (dgrid.io) 与自定义格式化程序一起使用(我已经尝试使用自定义渲染器)来 return raw HTML包含 Dijit 小部件,在页面加载期间,所有小部件都已正确解析,但在排序、分页或滚动时完全损坏(OnDemandGrid)。
在我的示例中,我在图标上使用了工具提示小部件(声明模式,见底部"Returned HTML for the cell")。
页面加载时:
滚动、排序、分页后...:[=23=]
为单元格返回 HTML(由格式化程序):
<div data-dojo-type="dijit/Tooltip" id="comxDynElement_101_dijit_1" data-dojo-props="connectId:'comxDynElement_101',position:['above']">Dupliquer cette facture</div><a href="..." id="comxDynElement_101"><i class="fa fa-clone"></i></a>
<div data-dojo-type="dijit/Tooltip" id="comxDynElement_102_dijit_1" data-dojo-props="connectId:'comxDynElement_102',position:['above']">Télécharger cette facture</div><a id="comxDynElement_102" href="..."><i class="fa fa-file-pdf-o"></i></a>
<div data-dojo-type="dijit/Tooltip" id="comxDynElement_103_dijit_1" data-dojo-props="connectId:'comxDynElement_103',position:['above']">Voir cette facture</div><a id="comxDynElement_103" href="..."><i class="fa fa-eye"></i></a>
我的格式化程序:
function (item) {
return item;
}
Dojo Parser 正在构建小部件并在页面加载时启动。在页面加载后将新声明 html 添加到您的页面时,不会自动解析这些小部件。您需要手动执行此操作。
例如,应该可以在网格的 renderRow
函数中手动调用解析器。可以找到一个例子 here.
所以下面的代码可以工作:
require([
'dgrid/OnDemandList',
'dojo/parser'
], function (OnDemandList,parser) {
var list = new OnDemandList({
collection: myStore, // a dstore collection
renderRow: function (object, options) {
var div = document.createElement('div');
div.appendChild(document.createTextNode(object.myField));
// only 'parse' new row, not whole document again.
parser.parse(div);
return div;
}
});
});
我将 dGrid 0.4.1-dev (dgrid.io) 与自定义格式化程序一起使用(我已经尝试使用自定义渲染器)来 return raw HTML包含 Dijit 小部件,在页面加载期间,所有小部件都已正确解析,但在排序、分页或滚动时完全损坏(OnDemandGrid)。
在我的示例中,我在图标上使用了工具提示小部件(声明模式,见底部"Returned HTML for the cell")。
页面加载时:
滚动、排序、分页后...:[=23=]
为单元格返回 HTML(由格式化程序):
<div data-dojo-type="dijit/Tooltip" id="comxDynElement_101_dijit_1" data-dojo-props="connectId:'comxDynElement_101',position:['above']">Dupliquer cette facture</div><a href="..." id="comxDynElement_101"><i class="fa fa-clone"></i></a>
<div data-dojo-type="dijit/Tooltip" id="comxDynElement_102_dijit_1" data-dojo-props="connectId:'comxDynElement_102',position:['above']">Télécharger cette facture</div><a id="comxDynElement_102" href="..."><i class="fa fa-file-pdf-o"></i></a>
<div data-dojo-type="dijit/Tooltip" id="comxDynElement_103_dijit_1" data-dojo-props="connectId:'comxDynElement_103',position:['above']">Voir cette facture</div><a id="comxDynElement_103" href="..."><i class="fa fa-eye"></i></a>
我的格式化程序:
function (item) {
return item;
}
Dojo Parser 正在构建小部件并在页面加载时启动。在页面加载后将新声明 html 添加到您的页面时,不会自动解析这些小部件。您需要手动执行此操作。
例如,应该可以在网格的 renderRow
函数中手动调用解析器。可以找到一个例子 here.
所以下面的代码可以工作:
require([
'dgrid/OnDemandList',
'dojo/parser'
], function (OnDemandList,parser) {
var list = new OnDemandList({
collection: myStore, // a dstore collection
renderRow: function (object, options) {
var div = document.createElement('div');
div.appendChild(document.createTextNode(object.myField));
// only 'parse' new row, not whole document again.
parser.parse(div);
return div;
}
});
});