2016-04-10 9 views
1

Ich versuche, diese Lösung auf eine Ember.js App anzuwenden. https://stackoverflow.com/a/3224854/2084924 Es funktioniert offensichtlich in der Jfiddle, aber ich bin nicht in der Lage, es richtig in Ember zu implementieren.Berechnung der Datumsdifferenz in Ember.js

Ich lerne und mache wahrscheinlich einen offensichtlichen Fehler. Ich habe die Funktion innerhalb des Modells platziert und erhalte einen "NaN" -Fehler. Ein Datum wird durch einen Eingabewert im Format M/D/YYYY übergeben. Jeder hat Erfahrung mit Daten und Glut? Kannst du sehen, warum es das Datum nicht analysieren würde?

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

Antwort

3

Sie sind nicht die Werte aus dem Modell zu lesen, versuchen Sie nur die Saiten „startdate“ und „enddate“, um Termine zu konvertieren. Es sollte new Date(this.get('startdate')); sein.

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

natürlich! macht Sinn, wenn jemand anders darauf hinweist. Danke. – manisha

1

versuchen diesen Code

//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

dies funktioniert aus dem gleichen Grund wie oben. Ich habe den Wert vom Objekt nicht aufgerufen. Danke. – manisha

+0

In diesem Szenario müsste "var self = this;" nicht zugewiesen werden. Es wird nur benötigt, wenn Sie innerhalb eines Callbacks einer Art wiederverwenden möchten (und selbst dann würde eine Pfeil-Funktion saubereren Code erzeugen). –

+0

@ Karl-JohanSjögren Ja, ich mache es, um sicher zu gehen, ob ein Callback auf der Funktion existiert. Aber du hast Recht – Shayan