我在ember.js中有一个helper函数(ifCond),如下所示
export default () => {
Handlebars.registerHelper('ifCond', function (v1, operator, v2, options) {
alert("hi");
if (params[3]) { //handle case insensitive conditions if 4 param is passed.
params[0] = params[0].toLowerCase();
params[2] = params[2].toLowerCase();
}
let v1 = params[0];
let operator = params[1];
let v2 = params[2];
switch (operator) {
case '==':
return (v1 == v2);
case '!=':
return (v1 != v2);
case '===':
return (v1 === v2);
case '<':
return (v1 < v2);
case '<=':
return (v1 <= v2);
case '>':
return (v1 > v2);
case '>=':
return (v1 >= v2);
case '&&':
return !!(v1 && v2);
case '||':
return !!(v1 || v2);
default:
return false;
}
});
}
当我尝试访问hbs文件中的此函数时,如下所示
{{#if (ifCond novv.ViolationId '==' noviv.ViolationId true)}}
{{log 'someVariable'}}
<br />
{{/if}}
我得到如下错误:
有什么需要帮忙的吗-先谢谢了
2条答案
按热度按时间mfpqipee1#
从你的例子看,你可能正在使用一个非常旧的版本的Ember。首先要从writing helpers上的Ember指南开始。在每个指南的右上角有一个版本选择器,它会带你回到以前的文档。从你的例子中可以猜测你正在使用1.11附近的东西。
我强烈建议您更新到一个更新版本的ember并使用ember-cli,因为这将使助手的导入和发现过程更加顺畅沿着获得更新的功能和安全更新。
pexxcrt22#
我的朋友,它完成了。在这里,前一个开发者把所有的帮助函数放在一个文件中,他造成的混乱是,他把其他文件与这些帮助函数放在不同的目录中-似乎我需要清理它。你的建议,检查定义帮助我研究webpack.config.js(异步助手,异步__部分),在这里,他将所有文件脚本组合在一起,并生成一个js文件,该文件将写入app.js。(或者Ember,我不确定)后面是camel大小写。例如,他在同一个ifCond.js文件中编写的一个helper-function,被转换为“replace”,我们可以用它来代替车把
如果假设,如果有两个单词-那么它遵循 Camel 的外壳(你知道它)。完全完成,我已经写了一些我自己的助手函数的需要-非常感谢大家谁跳进来帮助我-非常感谢,我不知道该如何形容我是多么高兴-谢谢。我自己的助手函数如下:
我用下面的语法来调用它们:
再次感谢大家在这个小组。:祈祷: