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'
    }
})