2016-06-04 5 views
0

Ich habe ein seltsames Problem in meinem Cordova Android-Projekt (angularjs + ionic), wenn ich Projekt in Android Studio laufen werde ich diesen Fehler bekommen auf meiner js-Datei.Angular js: unerwartete Token Fehler in Android Studio-Konsole, aber funktioniert gut im Browser

Uncaught SyntaxError: Unexpected token {, http://192.168.43.211:8100/templates/todo/js/controllers.js, Line: 184 

aber wenn ich dieselbe Datei in Google Chrome laufe ich die Resul bekommen und kein Fehler

Hier gezeigt ist der Codeblock der Fehlermeldung

$scope.todos = $scope.todos.map(({text, status,note,create_date,to_do_id}) => { 
      var ch; 
      if(status=='1') ch=true; else ch=false; 
      console.log(ch); 
       return { 
        text, 
        flag:ch, 
        note:note, 
        to_do_id:to_do_id, 
        create_date:create_date, 
        status:status 
        }; 
       }); 

Wenn ich die oben verstecken code block kein fehler wird in android studio console angezeigt, aber ich brauche den obigen code block, um die funktionalität zu vervollständigen.

Was ist das Problem

Antwort

1

Primäre Lösung

Sind Sie sicher, dass Ihr Handy-Browser Ausdrücke JS Pfeil unterstützt? Sie wurden in ECMAScript 6 eingeführt, sodass einige der Browser möglicherweise noch keine Unterstützung für sie haben. Versuchen Sie, den Pfeil Ausdruck in eine anonyme Funktion zu ändern:

$scope.todos = $scope.todos.map(function(record) { 
    var ch; 
    if (record.status == '1') ch = true; else ch = false; 
    console.log(ch); 
    return { 
     text: record.text, 
     flag: ch, 
     note: record.note, 
     to_do_id: record.to_do_id, 
     create_date: record.create_date, 
     status: record.status 
    }; 
}); 

Alternative Lösung

Wenn der obige Code immer noch nicht funktioniert, können Sie immer Ihre eigene Karte Funktion erstellen:

function _arrayMap(array, callback) { 
    var newArray = []; 

    for(var i = 0; i < array.length; i++) { 
     newArray.push(callback(array[i])); 
    } 

    return newArray; 
} 

Und verwenden Sie es in ähnlicher Weise:

$scope.todos = _arrayMap($scope.todos, function(record) { 
    var ch; 
    if (record.status == '1') ch = true; else ch = false; 
    console.log(ch); 
    return { 
     text: record.text, 
     flag: ch, 
     note: record.note, 
     to_do_id: record.to_do_id, 
     create_date: record.create_date, 
     status: record.status 
    }; 
}); 
+0

Lassen Sie mich Ihre Antwort versuchen –

+0

Jetzt ist der Fehler verschwunden, aber '$ scope.todos' Wert wird als Zeichenfolge gedruckt. –

+0

Mein Fehler, ich habe vergessen, dass die Syntax der map-Funktion bei Verwendung der anonymen Funktion etwas anders ist. Ich habe meine Antwort bearbeitet - sie sollte jetzt wie erwartet funktionieren. – PJDev

Verwandte Themen