Javascript 计算Ember.js中的日期差异

Javascript 计算Ember.js中的日期差异,javascript,ember.js,Javascript,Ember.js,我正在尝试将此解决方案应用于一个Ember.js应用程序。 它显然在JSFIDLE中工作,但我无法在Ember中正确实现它 我正在学习,可能犯了一个明显的错误。我将函数放在模型中,得到一个“NaN”错误。日期以M/D/YYYY格式通过输入值传递。有人有过约会和余烬的经验吗?你能理解为什么它不能解析日期吗 //app/model/task.js import DS from 'ember-data'; export default DS.Model.extend({ taskname: DS

我正在尝试将此解决方案应用于一个Ember.js应用程序。 它显然在JSFIDLE中工作,但我无法在Ember中正确实现它

我正在学习,可能犯了一个明显的错误。我将函数放在模型中,得到一个“NaN”错误。日期以M/D/YYYY格式通过输入值传递。有人有过约会和余烬的经验吗?你能理解为什么它不能解析日期吗

//app/model/task.js
import DS from 'ember-data';

export default DS.Model.extend({
  taskname: DS.attr(),
  startdate: DS.attr(),
  enddate: DS.attr(),
  duration: Ember.computed('startdate', 'enddate', function() {
    var date1 = new Date('startdate');
    var date2 = new Date('enddate');
    var timeDiff = Math.abs(date2.getTime() - date1.getTime());
    var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
    return diffDays;
  }),
  banding: DS.attr()
});

您没有从模型中读取值,只是尝试将字符串“startdate”和“enddate”转换为日期。它应该是新日期(this.get('startdate')


您没有从模型中读取值,只是尝试将字符串“startdate”和“enddate”转换为日期。它应该是新日期(this.get('startdate')

试试这个代码

//app/model/task.js
import DS from 'ember-data';

export default DS.Model.extend({
  taskname: DS.attr(),
  startdate: DS.attr(),
  enddate: DS.attr(),
  duration: Ember.computed('startdate', 'enddate', function() {
    var self = this;
    var date1 = new Date(self.get('startdate'));
    var date2 = new Date(self.get('enddate'));
    var timeDiff = Math.abs(date2.getTime() - date1.getTime());
    var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
    return diffDays;
  }),
  banding: DS.attr()
});
试试这个代码

//app/model/task.js
import DS from 'ember-data';

export default DS.Model.extend({
  taskname: DS.attr(),
  startdate: DS.attr(),
  enddate: DS.attr(),
  duration: Ember.computed('startdate', 'enddate', function() {
    var self = this;
    var date1 = new Date(self.get('startdate'));
    var date2 = new Date(self.get('enddate'));
    var timeDiff = Math.abs(date2.getTime() - date1.getTime());
    var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
    return diffDays;
  }),
  banding: DS.attr()
});

当然当别人指出这一点时,这是完全有道理的。谢谢,当然!当别人指出这一点时,这是完全有道理的。谢谢。这和上面的原因是一样的。我没有从对象调用值。谢谢。无需分配
var self=this在这个场景中。只有当您想在某种回调中重用时才需要它(即使是这样,箭头函数也会生成更干净的代码)。@Karl JohanSjögren是的,我这样做是为了确保函数上是否存在回调。但您认为这与上述原因相同。我没有从对象调用值。谢谢。无需分配
var self=this在这个场景中。只有当您想在某种回调中重用时才需要它(即使这样,箭头函数也会生成更干净的代码)。@Karl JohanSjögren是的,我这样做是为了确保函数上是否存在回调。但您是对的