获取HBS帮手,当越来越嵌套对象
假设我有以下对象:获取HBS帮手,当越来越嵌套对象
image: {
size: {
l: {
url: 'l.jpg',
},
m: {
url: 'm.jpg',
},
s; {
url: 's.jpg',
}
}
},
mySize: 'm'
如果我要得到相应的在我的模板图像的URL,我应该怎么办呢? 我试过了:
{{get image mySize '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}}
模板。
感谢您的快速回复!我使用concat帮助器方法,它的工作原理。计算属性听起来像一个好主意,但我不知道如何在我的模板中有每个循环时使用它。看到这里twiddle:[链接](https://ember-twiddle.com/bd86d0ff403e553fe578932eb7642f97?openFiles=templates.application.hbs%2C) –
啊,如果你循环的项目,你不能使用像这样的计算属性,你必须制作一个组件并将信息传递给该组件,并让它处理url,如果这是你所做的一切,听起来有点矫枉过正。 –
我同意。我不想制作一个组件来处理这样的小事情,一个get-concat组合将完成这项工作。 在我看来,Ember团队应该让帮手接受更多的2个参数,然后每个人都会非常简单直观。 再次感谢您的帮助! –
您可以编写自己的助手 – kumkanillam