ember.js 我遇到错误:编译错误:当我试图在Ember中编写辅助函数时,ifCond不是辅助函数

vq8itlhq  于 2022-11-05  发布在  其他
关注(0)|答案(2)|浏览(122)

我在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}}

我得到如下错误:
有什么需要帮忙的吗-先谢谢了

mfpqipee

mfpqipee1#

从你的例子看,你可能正在使用一个非常旧的版本的Ember。首先要从writing helpers上的Ember指南开始。在每个指南的右上角有一个版本选择器,它会带你回到以前的文档。从你的例子中可以猜测你正在使用1.11附近的东西。
强烈建议您更新到一个更新版本的ember并使用ember-cli,因为这将使助手的导入和发现过程更加顺畅沿着获得更新的功能和安全更新。

pexxcrt2

pexxcrt22#

我的朋友,它完成了。在这里,前一个开发者把所有的帮助函数放在一个文件中,他造成的混乱是,他把其他文件与这些帮助函数放在不同的目录中-似乎我需要清理它。你的建议,检查定义帮助我研究webpack.config.js(异步助手,异步__部分),在这里,他将所有文件脚本组合在一起,并生成一个js文件,该文件将写入app.js。(或者Ember,我不确定)后面是camel大小写。例如,他在同一个ifCond.js文件中编写的一个helper-function,被转换为“replace”,我们可以用它来代替车把

IMS.ReplaceHelper = Ember.Helper.extend({
    compute(args) {
        return args[0].replace(new RegExp(args[1], 'ig'), args[2]);
    }
})

如果假设,如果有两个单词-那么它遵循 Camel 的外壳(你知道它)。完全完成,我已经写了一些我自己的助手函数的需要-非常感谢大家谁跳进来帮助我-非常感谢,我不知道该如何形容我是多么高兴-谢谢。我自己的助手函数如下:

IMS.IsLastHelper = Ember.Helper.extend({
        compute(args) {
            var list = args[0];
            var item = args[1];

        if (Array.isArray(list)) {
            var id = list.indexOf(item);
            return id == list.length - 1;
        }
        return false;
    }
})
IMS.IsFirstHelper = Ember.Helper.extend({
    compute(args) {
        var list = args[0];
        var item = args[1];

        if (Array.isArray(list)) {
            var id = list.indexOf(item);
            return id == 0;
        }
        return false;
    }
})

我用下面的语法来调用它们:

{{#each  model.novs as |nov index|}}
                        {{#if (isFirst model.novs nov)}}
                        ({{nov.NOVNumber}}:
                        {{else}}
                        {{nov.NOVNumber}}:
                        {{/if}}
                        {{#each  nov.Violations as |novv index|}}
                        {{#unless (isLast nov.Violations novv)}}
                        {{novv.ViolationNumber}},
                        {{else}}
                        {{#if (isLast model.novs nov)}}
                        {{novv.ViolationNumber}}
                        {{else}}
                        {{novv.ViolationNumber}};
                        {{/if}}
                        {{/unless}}
                        {{/each}}
                        {{#if (isLast model.novs nov)}}
                        )
                        {{/if}}
                        {{/each}}

再次感谢大家在这个小组。:祈祷:

相关问题