如果您的 ajax 调用返回 html,您可以在渲染器中放置 dijit/layout/ContentPane,并在 ContentPane 的 href 属性中设置要获取的内容的 url。假设您的初始数据(相当于示例的内存存储)将具有一个名为“yourServiceCallHref”的属性,其中包含您想要延迟加载的 url,您可以尝试以下操作:
require(["dijit/layout/ContentPane", ...], function(ContentPane){
renderers = {
...,
table: function(obj, options){
var div = put("div.collapsed", Grid.prototype.renderRow.apply(this, arguments)),
cp = new ContentPane({
href : obj.yourServiceCallHref
}),
expando = put(div, "div.expando", cp.domNode);
cp.startup();
return div;
}
});
如果您的服务返回 json,您可能会以类似的方式对dojo/request执行某些操作。只需在您的请求回调中添加您的 dom 创建步骤并将它们放在名为“expando”的 div 中...
另一种选择是将内存存储替换为JsonRest存储,并让服务器输出与您在内存存储上看到的相同的 json 格式。这意味着所有数据都将在一次调用中获取...