У меня странная проблема в моем проекте андроида 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 не будет обнаружена ошибка, но для завершения этой функции мне нужен блок кода выше.
В чем проблема
Первичное решение
Вы уверены, что ваш мобильный браузер поддерживает выражения 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
};
});
$scope.todos
в виде строки.