在尝试了许多不同的事情之后我很失落。我正在构建一个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。
答案 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();