Ember.js 获取嵌套对象时在hbs中获取辅助对象
假设我有以下对象:Ember.js 获取嵌套对象时在hbs中获取辅助对象,ember.js,handlebarshelper,Ember.js,Handlebarshelper,假设我有以下对象: 图像:{ 尺寸:{ l:{ url:'l.jpg', }, m:{ url:'m.jpg', }, s{ url:'s.jpg', } } }, 神秘化:“m” 如果我想在我的模板中获得相应的图像url,我应该怎么做? 我试过: 但它不起作用 我可以通过如下方式键入所需的url: {{get (get image mySize) 'url')}} 然而,这是一个非常不直观和丑陋的解决办法。有没有更好的办法?谢谢。您需要同时使用concat帮助程序: {{get image
图像:{
尺寸:{
l:{
url:'l.jpg',
},
m:{
url:'m.jpg',
},
s{
url:'s.jpg',
}
}
},
神秘化:“m”
如果我想在我的模板中获得相应的图像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}
您可以自己写一封帮助信,感谢您的快速回复!我使用了concat助手方法,它很有效。Computed属性听起来是个好主意,但当我的模板中有一个each循环时,我不知道如何使用它。看这里的旋转:啊,如果你在项目上循环,你不能使用这样的计算属性,你必须制作一个组件,将信息传递给该组件,并让它处理url,如果这就是你所做的,听起来有点过分了。我同意。我不想让一个组件来处理这么小的事情,一个get-concat组合就可以了。在我看来,Ember团队应该让get助手接受2个以上的参数,这样每个人都会非常简单和直观。再次感谢你的帮助!
imageUrl: Ember.computed('mySize', 'image.size', function() {
let { image, mySize } = this.getProperties('image', 'mySize');
return Ember.get(image, `size.${mySize}.url`);
})