我在cordova android项目中遇到一个奇怪的问题(angularjs + ionic),当我在android studio中运行项目时,我的js文件会收到此错误。
Uncaught SyntaxError: Unexpected token {, http://192.168.43.211:8100/templates/todo/js/controllers.js, Line: 184
但是当我在谷歌浏览器中运行相同的文件时,我将得到结果,并且不会显示任何错误
这是错误消息的代码块
$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 studio控制台中未显示任何错误,但我需要以上代码块才能完成功能。
问题是什么
主要解决方案
您确定您的移动浏览器支持JS箭头表达式吗?它们是在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
};
});
替代解决方案
如果上面的代码仍然无法正常工作,则您始终可以创建自己的map函数:
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
};
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句