把手RegisterHelper与Ember错误

时间:2015-12-01 00:43:00

标签: javascript ember.js handlebars.js registerhelper

在尝试了许多不同的事情之后我很失落。我正在构建一个Ember站点并且在我的一个Handlebars模板中,我想仅在条件为真时才显示链接。这是我的模板。

<script type="text/x-handlebars" data-template-name="project">
    <div class="project-container">
        {{is_external model.url model.title}}
    </div>
</script>

现在,我的js文件中的registerHelper:

Handlebars.registerHelper('is_external', function(url, title, options) {
  if (url.indexOf("codepen") < 0) {
      return "<p class='view-external-link'>"+
            "<a href='{{url}}'' aria-label='View {{title}}'' target='_blank'>Visit Site</a>"+
            "</p>";
  }
});

然而,我一直收到的错误是: 未捕获的TypeError:无法读取属性&#39; isHelperFactory&#39;来自我的ember.js文件的未定义

理想情况下,我更愿意从帮助程序返回true或false以保持Html不受我的帮助程序功能的限制,但首先我需要一些帮助才能使其正常工作。

我也在页面上包含了ember,ember_compiler和handlebars。

2 个答案:

答案 0 :(得分:0)

我对Ember的理解是,即使是1.x,Ember也包含了自己的Handlebars实例,所以你的外部实例可能会干扰。

Ember v2.2.0 documentation on templates表示要使用Ember.Helper.helper,v1.13.0也是如此。也许尝试一下,看看它是否有帮助。

答案 1 :(得分:0)

你的Ember的版本是什么?

当我生成帮助器时,Ember使用这样的语法

import Ember from "ember";

// http://emberjs.com/deprecations/v1.x/#toc_ember-select

export function checkEquality([leftSide, rightSide]) {
    return leftSide === rightSide;
}

export default Ember.Helper.helper(checkEquality);

在模板中

{{is-equal item.selection selection}}

如果你想在帮助者中使用html

你需要返回

yourHtml.htmlSafe();