ember.js 在Handlebars.js helper参数中连接字符串和变量的明智方法?

djp7away  于 11个月前  发布在  其他
关注(0)|答案(3)|浏览(143)

我试图在Ember中构建一个简单的模态组件,但Handlebars的“无逻辑”对我来说太不合逻辑了。有没有什么明智的方法可以实现这样的结果?

<h2>Nice block about {{title}}</h2>
<a href="#" data-toggle="modal" id="add-item-{{title}}"> {{!this works}}

{{#my-modal modal-id="add-item-{{title}}" header='New {{title}}'}} {{! those don't}}
  <p>My body blabla</p>
{{/my-modal}}

字符串
目前,我最终得到了我的模态id为"add-item-{{title}}",字面上,以及模态标题。
而且...不,现在我不考虑将“title”作为一个新的参数传递并在模态中使用它。另一个模板中的模态头可能不是“New {{title}}”,而是“你确定吗?”或“关于{{title}}的细节“。

nwsw7zdq

nwsw7zdq1#

你要找的是concat helper。使用它,你的第二个例子会变成:

{{#my-modal modal-id=(concat 'add-item-' title) header=(concat 'New ' title)}} 
  <p>My body blabla</p>
{{/my-modal}}

字符串

68bkxrlz

68bkxrlz2#

我来这里是为了寻找一个concat的助手,如果有人在这里登陆寻找同样的东西,它会很有用,那么append助手内置了一个append助手。

{{> my-modal modal-id=(append "add-item-" title) header=(append "New " title)}}

字符串
https://github.com/helpers/handlebars-helpers

eanckbw9

eanckbw93#

是的,我就是这样做的。如果你需要在标题中添加一些不仅仅是model.title的东西,那么在你的控制器上填充一个计算属性(es6字符串插值语法):

控制器

modalHeader: function() {
    return `New ${this.get('model.title')}`;
  }.property('model.title')

字符串

模板

{{#my-modal header=modalHeader}}
  <p>My body blabla</p>
{{/my-modal}}


至于id,你可以在组件中做一些有趣的事情来覆盖它,参见this codepen,但我不知道它是如何与modal混淆的。

相关问题