由于我从JavaScript转换为TypeScript(版本2.1.5),因此以下用于过滤日期选择的代码不再起作用。我想我知道为什么,但是目前我还没有找到好的解决方法。
这是我的两个日期选择器:从和到:
<div class="form-group">
<label class="label label-letter-spacing">From </label>
<div class='input-group date' id='datepickerFrom'>
<md-datepicker ng-model="vm.dateFrom"></md-datepicker>
</div>
</div>
<div class="form-group">
<label class="label label-letter-spacing">To </label>
<div class='input-group date' id='datepickerTo'>
<md-datepicker ng-model="vm.dateTo" md-date-filter="vm.onlyGreaterThanFromDate" ></md-datepicker>
</div>
</div>
在Controller.ts中,我有:
dateTo: Date;
dateFrom: Date;
onlyGreaterThanFromDate(date) {
if (this.dateFrom != undefined )
return (date.getTime() > this.dateFrom.getTime());
};
在浏览器(chrome)中调试时,我注意到执行此方法时,上下文已更改,不再代表我的Controller,而是CalendarCtrl,因此this.dateFrom是undefined。
我尝试了一些调整,以静态或私有方式设置dateFrom属性,但两者都不起作用。
我仍在搜索,期待阅读您对此的评论/想法。 :) 谢谢
最佳答案
非常感谢曹操的回答。那是正确的代码,我学会了TypeScript中的有用功能:)
所以我重新发布解决方案:
在Typescript中,您可以使用箭头功能保留上下文。
类似于:onlyGreaterThanFromDate =(date)=> {如果
(this.dateFrom!= undefined)返回(date.getTime()>
this.dateFrom.getTime()); };