Angular js: неожиданная ошибка токена, отображаемая в Android Studio Console, но отлично работает в браузере

0

У меня странная проблема в моем проекте андроида cordova (angularjs + ionic), когда я запускаю проект в студии android, я получу эту ошибку в файле js.

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

но когда я запускаю тот же файл в google chrome, я получу resul, и никакая ошибка не отображается

Вот код блока сообщения об ошибке

$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
                  };
              });

Когда я спрячу вышеуказанный блок кода, в консоле студии Android не будет обнаружена ошибка, но для завершения этой функции мне нужен блок кода выше.

В чем проблема

Теги:
cordova

1 ответ

1
Лучший ответ

Первичное решение

Вы уверены, что ваш мобильный браузер поддерживает выражения JS arrow? Они были введены в ECMAScript 6, поэтому некоторые из браузеров все еще могут не поддерживать их. Попробуйте изменить выражение стрелки на анонимную функцию:

$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
    };
});

Альтернативное решение

Если вышеуказанный код все равно не будет работать, вы всегда можете создать свою собственную функцию карты:

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

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

    return newArray;
}

И используйте его так же:

$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
    Позвольте мне попробовать ваш ответ
  • 0
    Теперь ошибка исчезла, но значение $scope.todos в виде строки.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню