【问题标题】:Handlebars If/Else Condition Outputting Wrong ValueHandlebars If/Else 条件输出错误值
【发布时间】:2016-04-09 17:42:33
【问题描述】:

我有一个函数,它只在存在值的情况下返回要在我的视图中使用的值。然后,我在我的 if 条件中为一个视图引用此值,其中车把仅在存在值时正确显示字符串。但是,当我在单独的视图中使用 if/else 语句时,无论值是否存在,它都会导致 else 语句。为什么我只使用 If 语句就能得到正确的输出,但如果我在其中抛出 else 却得到错误的输出?

函数(如果值存在则返回字符串):

dataDateRangeSlug: function(){
            var startDateValue = this.getDataValue('dataDateStart');
            var startDate = new Date(startDateValue); 
            var momentStartDate = moment(startDate).utc().format("MM/DD/YYYY");

            var endDateValue = this.getDataValue('dataDateEnd');
            var endDate = new Date(endDateValue);
            var momentEndDate = moment(endDate).utc().format("MM/DD/YYYY");

            if (startDateValue == null){
                console.log("Statement true");
            } else {
                console.log("Statement false");
                return momentStartDate + ' - ' + momentEndDate;
            }           

只需使用 {{#if}}:

{{#if dataDateRangeSlug}}
            <p class="card-date-range">Date Range: {{this.dataDateRangeSlug}}</p>
{{/if}}

输出:

如果dataDateRangeSlug中有null,则p标签不存在。

如果 dataDateRangeSlug 中有值,则 p 标记存在记录中的值。

使用 {{#if}} 和 {{else}}:

{{#if dataDateRangeSlug}}
                    <div class="form-inline date-start">
                        <label for="data-start-range">Data Date Start:</label>
                        <input type="date" id="data-date-start" name="dataDateStart" value="{{this.dataDateStartSlug}}">
                    </div>
                    <div class="form-inline date-end">
                        <label for="data-end-range">Data Date End:</label>
                        <input type="date" id="data-date-end" name="dataDateEnd" value="{{this.dataDateEndSlug}}">
                    </div>
                {{else}}
                    <div class="add-remove-date-range">
                        <a href="#" id="date-range-add-link">Add Report Date Range</a>
                        <a href="#" id="date-range-remove-link">Remove Report Date Range</a>
                    </div>
{{/if}}

输出:

始终输出 {{else}} 代码,无论记录是否有值或为空

【问题讨论】:

    标签: javascript if-statement handlebars.js


    【解决方案1】:

    在我这边,它按预期工作,创建了样本小提琴https://jsfiddle.net/u5x9fj98/1/
    您还如何映射车把支架/变量?你能像上面的小提琴一样试试吗(在var Data下定义dataDateRangeSlug)。

    【讨论】:

    • 你是对的,问题不在于代码,而在于调用对象。我只调用了对象属性而不引用对象本身,这就是为什么我没有收到正确的输出
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 2018-10-09
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    相关资源
    最近更新 更多