2016-04-10 17 views
1

このソリューションをEmber.jsアプリに適用しようとしています。 https://stackoverflow.com/a/3224854/2084924 明らかにjsfiddleで動作しますが、私はEmberで正しく実装できません。Ember.jsの日付差の計算

私は学習しており、明らかに間違いがあります。私はモデルの中に関数を配置し、 "NaN"エラーが発生しています。日付はM/D/YYYYの形式で入力値に渡されます。誰でも日付とemberの経験がありますか?なぜそれが日付を解析するのに失敗するか分かりますか?

//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() 
}); 

答えて

3

あなたは、あなただけの日付に文字列「STARTDATE」と「終了日」を変換しようとしている、あなたのモデルから値を読み取るされていません。それはnew Date(this.get('startdate'));でなければなりません。

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(this.get('startdate')); 
    var date2 = new Date(this.get('enddate')); 
    var timeDiff = Math.abs(date2.getTime() - date1.getTime()); 
    var diffDays = Math.ceil(timeDiff/(1000 * 3600 * 24)); 
    return diffDays; 
    }), 
    banding: DS.attr() 
}); 
+0

を試してみてください!他の誰かがそれを指摘したときには完璧な意味を持ちます。ありがとうございました。 – manisha

1

このコードにはもちろん

//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() 
}); 
+0

これは上記と同じ理由で機能します。私はオブジェクトから値を呼んでいませんでした。ありがとうございました。 – manisha

+0

このシナリオでは 'var self = this;'を割り当てる必要はありません。あなたが何らかのコールバックの内部で再利用したい場合(そして矢関数でさえもよりクリーンなコードを生成したい場合)にのみ必要です。 –

+0

@ Karl-JohanSjögrenええ、コールバックがfunction.butに存在するかどうかは確かです – Shayan