2016-08-09 20 views
0

Ich habe den unten Filter (warum ich von StackOverflow), die auf einer Seite funktioniert, aber löst den unten Fehler auf einem anderen (mit dem gleichen Objekt).Angular Filter werfen "Kann nicht interpolieren" Fehler, obwohl der Filter funktioniert

app.filter('dateFormat', function dateFormat($filter){ 
    return function(text){ 
    var tempdate= new Date(text.replace(/-/g,"/")); 
    return $filter('date')(tempdate, "dd-MM-yyyy"); 
    } 
}); 

Can't interpolate: {{ job.job_date | dateFormat}} 
TypeError: text is undefinedO/<@http://localhost/ef-serial-numbers/public/assets/global/plugins/angularjs/angular.min.js:6:[email protected]://localhost/ef-serial-numbers/public/assets/global/plugins/angularjs 

Wenn ich job.job_date zu einem fest codierten Datum zu ändern, verschwindet der Fehler. Die Sache ist, der Filter funktioniert tatsächlich korrekt, unabhängig vom Fehler.

+1

Vielleicht prüfen, ob 'text' vor dem Aufruf von' .replace' nicht definiert ist? – MMhunter

+0

Ich glaube, der Kommentar von @MMHunter ist korrekt als die Lösung; Der Grund für dieses Verhalten ist (wahrscheinlich nur raten), dass das 'job.job_date'' undefined' startet, aber dann schnell einen Wert bekommt; der erste Digest löst die Ausnahme aus, der zweite zeigt den korrekten Wert an und der Filter "funktioniert" scheinbar. –

+0

@Lock mit Vergnügen xD. – MMhunter

Antwort

2

Vielleicht überprüfen, ob text nicht definiert ist vor dem Aufruf .replace.

Da ganz am Anfang die Filterfunktion aufgerufen werden kann, bevor job.job_date seinen Wert erhält.

+0

Hat mir geholfen, danke für das Posten Ihrer Antwort –