如何在dojo小部件中使用json成员对象
我正在迭代一个json,其格式如下如何在dojo小部件中使用json成员对象,json,dojo,widget,Json,Dojo,Widget,我正在迭代一个json,其格式如下 request("js/my/data/sample.json", { handleAs: "json" }).then(function (jsonResults) { arrayUtil.forEach(jsonResults.LinksMap, function (List) { arrayUtil.forEach(List.LinksMap.entry, function (Ientry) { v
request("js/my/data/sample.json", {
handleAs: "json"
}).then(function (jsonResults) {
arrayUtil.forEach(jsonResults.LinksMap, function (List) {
arrayUtil.forEach(List.LinksMap.entry, function (Ientry) {
var widget = new support(Ientry.Link).placeAt(authorContainer);
});
});
});
小部件HTML模板如下所示
<div><span title="${title}">${title}</span></div> <br />
<div><span title="${description}">${description}</span></div> <br />
<a class="info" title="${title}" href="${url}">${title}</a><br />
${title}
${description}
我想使用json中提供的对象链接类型在小部件的html模板中使用不同的类,因此如果它的链接类型是“信息”,那么使用
如果是新闻,那么使用
<a class="news" title="${title}" href="${url}">${title}</a><br />
此修改模板的组合:
<div><span title="${Link.title}">${Link.title}</span></div> <br />
<div><span title="${Link.description}">${Link.description}</span></div> <br />
<a class="${className}" title="${Link.title}" href="${Link.url}">${Link.title}</a><br />
但更好的办法是在小部件中实现一个
post-create
方法,该方法可以在小部件构建之后和显示之前,以您喜欢的任何方式修改小部件
请参阅并在此处搜索postCreate。将整个
条目
传递给您的小部件,而不仅仅是链接
。然后,小部件可以根据linkType
@PaulGrime添加/删除CSS类本身。当我传递整个条目时,它不起作用,因为我有html模板使用链接对象及其属性。这起作用了。我应该在postcreate中使用这些。我会的。多亏了这两个。出于某种原因,它还将类添加到主div中。我如何重写它?我将它重命名为某个名称中不包含类的名称,并且它可以工作。Oleg Mikheev我如何在PostCreate上使用您的代码。有样品吗
<div><span title="${Link.title}">${Link.title}</span></div> <br />
<div><span title="${Link.description}">${Link.description}</span></div> <br />
<a class="${className}" title="${Link.title}" href="${Link.url}">${Link.title}</a><br />
request("js/my/data/sample.json", {
handleAs: "json"}).then(function(jsonResults){ arrayUtil.forEach(jsonResults.LinksMap, function(List){arrayUtil.forEach(List.LinksMap.entry, function(Ientry){
if('information' === Ientry.linkType) Ientry.className = 'info';
else if('news link' === Ientry.linkType) Ientry.className = 'news';
var widget = new support(Ientry).placeAt(authorContainer);
});});});