2014-01-13 56 views
1

js与HandleBar访问嵌套的JSON属性,我已经使用它几天了,但我遇到了问题。无法从句柄栏模板

基本上我有以下JSON数据:

{ 
    "id":1009, 
    "parent_id":1007, 
    "template":"blog-post", 
    "path":"/blog-post/another-test-blog-post/", 
    "name":"another-test-blog-post", 
    "created":1389310922, 
    "modified":1389371901, 
    "created_users_id":41, 
    "modified_users_id":41, 
    "title":"Another Test Blog Post", 
    "headline":null, 
    "summary":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum quis lectus dui. ", 
    "image_caption":"Another Image Caption", 
    "images":{ 
     "blog-sample-image-medium.png":{ 
     "basename":"blog-sample-image-medium.png", 
     "description":"", 
     "tags":"", 
     "formatted":true, 
     "modified":1389352919, 
     "created":1389352919 
     } 
    }, 
    "sub_heading":"Another Sub Heading" 
} 

它是有效的数据,我能到我的车把模板中获取参数和显示。然而,我无法访问“图像”中的属性,我也尝试过各种技术,无法这样做。这里是我的模板的问题的一部分:

 {{#each item in model}} 

     <div class="media-element" {{#ifIsNthItem nth=3}} style="margin-right: 0px;" {{/ifIsNthItem}}> 

      <div style="skyiq-element-icon blog-element"> 
      </div> 

      <div class="media-main-image grayscale" style=""> 




      </div> 
      <p class="sub-heading">{{item.title}}</p> 
      <ul> 
       <li><a href="#"><i aria-hidden="true" class="skycon-user-profile"></i> By Liam Powell</a></li> 
       <li><i aria-hidden="true" class=" skycon-info"></i> 02/Dec/2013</li> 
      </ul> 
      <p>{{{item.summary}}}</p> 
      <a href="#blog" class="skyiq-read-more">read more</a> 
      <div class="skyiq-line"></div> 
      <a href="#" class="skyiq-share-link"><i class=" skycon-share" aria-hidden="true"></i> Share</a> 
      </div> 
     {{/each}} 

这样的参数,如item.summary显示,但我不能例如显示item.images.1.basename。

任何帮助或正确的方向点将是一个很大的帮助。

在此先感谢

回答

1

三件事:

1)你访问它像这样的方式:{{item.images.1.basename}}让我觉得你要正确对待相似图片的数组。你不能像在javascript中一样使用句柄中的索引号来访问数组中的项目。 Ember提供名为firstObjectlastObject的帮助属性,这些属性可以让您访问数组的第一个和最后一个对象。但是,没有一个secondObject它看起来像你想要的情况下,你的布局。通常,访问数组元素的方式是使用{{#each}}迭代它们。

2)在你发布的JSON中,images不是一个数组,而是一个对象。所以,你可以像这样访问它:{{item.images.blog-sample-image-medium.png.basename}}

3)Ember很可能不会喜欢对象键blog-sample-image-medium.png有一段时间的事实,因为这就是当它访问下一个对象时的计算方式。你应该试着弄清楚如何从密钥名称中获取期限。

+0

好的,谢谢一些有趣的食物,问题是blog-sample-image-medium.png将永远是一个动态的名字。感谢提示亚当:) – user1412777