1

我正在迭代一个格式是这样的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) {
            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 />

我想使用 json 中提供的对象 linkType 在小部件的 html 模板中使用不同的类,所以如果它 linkType 是“信息”,那么使用

     <a class="info" title="${title}" href="${url}">${title}</a><br />

如果是新闻,请使用

          <a class="news" title="${title}" href="${url}">${title}</a><br />
4

1 回答 1

2

此修改模板的组合:

<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);

});});});

但更好的想法是postCreate在您的小部件中实现一个方法,该方法能够在构建后和显示之前以您喜欢的任何方式修改小部件。

请参阅本指南并在那里搜索postCreate

于 2013-04-23T20:27:43.570 回答