我使用dGrid 0.4.1-dev(dgrid.io)和自定义格式化程序(我尝试使用自定义渲染器)返回包含Dijit小部件的原始HTML ,在页面加载期间,所有小部件已被正确解析但在排序,分页或滚动(OnDemandGrid)时它完全被破坏。
在我的示例中,我在图标上使用工具提示小部件(声明模式,请参阅底部“返回单元格的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;
}
答案 0 :(得分:0)
正在构建小部件并由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;
}
});
});