简体   繁体   English

带有Ember错误的把手RegisterHelper

[英]Handlebars RegisterHelper with Ember Error

I'm pretty lost after trying numerous different things. 在尝试了许多不同的事情之后,我很迷茫。 I am building an Ember site and inside of one of my Handlebars templates, I want to display a link only if a condition is true. 我正在建立一个Ember网站,并且在我的一个Handlebars模板中,我只想在条件为真时显示链接。 Here is my template. 这是我的模板。

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

Now, my registerHelper in my js file: 现在,我的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>";
  }
});

The error I keep receiving however, is: Uncaught TypeError: Cannot read property 'isHelperFactory' of undefined coming from my ember.js file. 但是,我一直收到的错误是: Uncaught TypeError:无法读取来自我的ember.js文件的未定义属性'isHelperFactory'

Ideally, I would prefer to just return true or false from the helper to keep the Html out of my helper function but first I just need some help getting it working. 理想情况下,我希望仅从帮助程序返回true或false,以使Html不在我的帮助程序函数中,但是首先我需要一些帮助使其正常运行。

I am including ember, ember_compiler, and handlebars on my page as well. 我的页面上也包括了ember,ember_compiler和把手。

My understanding of Ember is that since even 1.x, Ember included its own instance of Handlebars, so your external instance might be interfering. 我对Ember的理解是,即使是1.x版本,Ember也包含了自己的Handlebars实例,因此您的外部实例可能会造成干扰。

The Ember v2.2.0 documentation on templates says to use Ember.Helper.helper , as does v1.13.0. 模板上Ember v2.2.0文档说要使用Ember.Helper.helper ,与v1.13.0一样。 Maybe give that a try and see if it helps. 也许尝试一下,看看是否有帮助。

What is the version of your Ember? 您的Ember版本是什么?

When i generate helper Ember uses syntax like this 当我生成助手时,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);

In the template 在模板中

{{is-equal item.selection selection}}

And if you want to use html within helper 如果您想在帮助程序中使用html

you need to return 你需要回来

yourHtml.htmlSafe();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM