获取嵌套对象时在 hbs 中获取帮助程序

Get helper in hbs when getting nested object

假设我有以下对象:

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

如果我想在我的模板中得到相应的图像url,我应该怎么做? 我试过了:

{{get image mySize 'url'}}

但它不起作用。

我可以通过这样输入得到我想要的 url:

{{get (get image mySize) 'url')}}

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

您需要同时使用 concat 助手:

{{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