首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ember把手中的If条件

ember把手中的If条件
EN

Stack Overflow用户
提问于 2019-11-06 06:37:25
回答 1查看 222关注 0票数 0

我有一个ember助手方法,如下所示

代码语言:javascript
运行
复制
export default () => { 
        Handlebars.registerHelper('ifCond', function (v1, operator, v2, options) {
            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文件中调用它,如下所示

代码语言:javascript
运行
复制
{{#if (ifCond 'testing' '===' 'testing' true)}}

但是我得到了以下错误,有人能给我一些建议吗,谢谢。

代码语言:javascript
运行
复制
contacts.hbs:41 Uncaught Error: Module build failed (from ./.webpack/webpack-handlebars.js):
Error: if doesn't match each - 372:59
    at validateClose (C:\SourceCode\IMS\Development\IMS\IMS.Ember\node_modules\ember-source\dist\ember-template-compiler.js:11014:13)
    at Object.prepareBlock (C:\SourceCode\IMS\Development\IMS\IMS.Ember\node_modules\ember-source\dist\ember-template-compiler.js:11125:7)
    at Object.anonymous (C:\SourceCode\IMS\Development\IMS\IMS.Ember\node_modules\ember-source\dist\ember-template-compiler.js:8339:25)
    at Parser.parse (C:\SourceCode\IMS\Development\IMS\IMS.Ember\node_modules\ember-source\dist\ember-template-compiler.js:10142:38)
    at parse (C:\SourceCode\IMS\Development\IMS\IMS.Ember\node_modules\ember-source\dist\ember-template-compiler.js:11271:36)
    at preprocess (C:\SourceCode\IMS\Development\IMS\IMS.Ember\node_modules\ember-source\dist\ember-template-compiler.js:5817:71)
    at precompile (C:\SourceCode\IMS\Development\IMS\IMS.Ember\node_modules\ember-source\dist\ember-template-compiler.js:3949:38)
    at Object.precompile (C:\SourceCode\IMS\Development\IMS\IMS.Ember\node_modules\ember-source\dist\ember-template-compiler.js:8119:37)
    at Object.module.exports (C:\SourceCode\IMS\Development\IMS\IMS.Ember\.webpack\webpack-handlebars.js:15:29)
    at Object.<anonymous> (http://localhost:58799/Ember/dist/templates.js?version=1572992916177.89:22620:7)
EN

回答 1

Stack Overflow用户

发布于 2019-11-06 06:57:13

{{#符号告诉handlebars期望一个/}}`,如下所示:

代码语言:javascript
运行
复制
{{#if true}}
  do something
{{/if}}

然而,如果你将你的代码修改为{{if (ifCond 'testing' '===' 'testing' true)}},那么错误就会消失,你是在‘内联’使用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58720507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档