获取嵌套对象时获取hbs中的帮助器

时间:2016-08-24 07:18:12

标签: ember.js handlebarshelper

假设我有以下对象:

catch (Exception)
{
    InstanceID = nodata;
}

如果我想在模板中获取相应的图片网址,我应该怎么做? 我试过了:

image: {
  size: {
    l: {
      url: 'l.jpg',
    },
    m: {
      url: 'm.jpg',
    },
    s; {
      url: 's.jpg',
    }
  }
},
mySize: 'm'

但它不起作用。

我可以通过这样输入来获取我想要的网址:

{{get image mySize 'url'}}

然而,这是一个非常不直观和丑陋的解决方法。有没有更好的方法?谢谢。

1 个答案:

答案 0 :(得分:1)

你需要使用concat helper:

{{get image (concat 'size.' mySize '.url')}}

但这听起来像计算属性的工作:

imageUrl: Ember.computed('mySize', 'image.size', function() {
  let { image, mySize } = this.getProperties('image', 'mySize');
  return Ember.get(image, `size.${mySize}.url`);
})

这样您就可以在模板中使用{{imageUrl}}

Ember twiddle