Handlebars If/Else 条件输出错误值
Handlebars If/Else Condition Outputting Wrong Value
我的功能是 returns 只有存在值时才会在我的视图中使用的值。然后,我在一个视图的 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}} 代码,无论记录是否有值或为空
在我这边,它按预期工作,已经创建了示例 fiddle https://jsfiddle.net/u5x9fj98/1/
另外,您如何映射 Handlebars holders/variable?你能像上面那样试试吗fiddle(在var Data
下定义dataDateRangeSlug
)。
我的功能是 returns 只有存在值时才会在我的视图中使用的值。然后,我在一个视图的 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}} 代码,无论记录是否有值或为空
在我这边,它按预期工作,已经创建了示例 fiddle https://jsfiddle.net/u5x9fj98/1/
另外,您如何映射 Handlebars holders/variable?你能像上面那样试试吗fiddle(在var Data
下定义dataDateRangeSlug
)。