Ember.js 从另一个助手调用助手
我有一个模板,其中包含项目的背景图像:Ember.js 从另一个助手调用助手,ember.js,Ember.js,我有一个模板,其中包含项目的背景图像: {{#each model as |item|}} <div style="background-image: url('img/backgrounds/{{item.imageBackground}}');"> {{image.title}} </div> {{/each}} 现在,我想制作第二个助手,以某种方式封装第一个助手,并将所需的“样式”字符串添加到链接中: // helpers/imagebackgo
{{#each model as |item|}}
<div style="background-image: url('img/backgrounds/{{item.imageBackground}}');">
{{image.title}}
</div>
{{/each}}
现在,我想制作第二个助手,以某种方式封装第一个助手,并将所需的“样式”字符串添加到链接中:
// helpers/imagebackgoundstyle.js
import Ember from 'ember';
import { imagelink } from 'my-app-name/helpers/imagelink';
export default Ember.Helper.extend({
compute(params, hash) {
// ERROR HERE
let link = imagelink(params, hash);
return Ember.String.htmlSafe("background-image: url('"+link+"');");
}
});
按如下方式调用Second helper:
<div style={{imagebackgroundstyle workgroup.imageBackground item='workgroup' type='imageBackground'}}>
我在这里得到的错误是imagelink.imagelink不是一个函数
我尝试过几种变体,甚至是一些奇怪的东西,比如imagelink.compute(params,hash)
。。。
很明显,我在导入帮助程序时做错了什么,但我就是绕不开什么
我试过了
和
还有几个。。。。
未解决/已过时。我相信您的不是函数
错误都与您的导入语法有关:
import { imagelink } from 'my-app-name/helpers/imagelink';
您正在尝试导入不存在的内容,因为imagelink辅助对象是作为默认值导出的。因此,您必须使用:
import imagelink from 'my-app-name/helpers/imagelink';
但您的代码将遇到另一个问题,因此我建议将其更改为:
import Ember from 'ember'
import ImageLink from './image-link'
export default ImageLink.extend({
compute(params, hash) {
const val = this._super(params, hash)
return val + '2'
}
})
您在这里所做的只是扩展其他帮助程序,通过使用此._super()调用其计算函数,并在新帮助程序中使用该函数的返回值
下面是一个示例。谢谢!首先是为了发现导入错误的错误,其次是为了扩展helper并调用_super!看起来很有前途!
import Ember from 'ember'
import ImageLink from './image-link'
export default ImageLink.extend({
compute(params, hash) {
const val = this._super(params, hash)
return val + '2'
}
})