【问题标题】:Angular js :unexpected token error shown in android studio console,but works fine in browserAngular js:android studio 控制台中显示意外令牌错误,但在浏览器中工作正常
【发布时间】:2016-06-04 18:30:52
【问题描述】:

我的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 控制台中没有显示错误,但我需要上面的代码块来完成功能。

有什么问题

【问题讨论】:

    标签: javascript android angularjs cordova


    【解决方案1】:

    主要解决方案

    您确定您的移动浏览器支持 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
        };
    });
    

    替代解决方案

    如果上面的代码仍然无法运行,您可以随时创建自己的地图函数:

    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值被打印为字符串。
    • 我的错,我忘了map 函数的语法在使用匿名函数时有点不同。我编辑了我的答案 - 现在应该可以按预期工作了。
    • 如果上面的方法仍然不起作用,我还添加了一种替代解决方案
    猜你喜欢
    • 2023-04-02
    • 2018-03-22
    • 2021-08-24
    • 1970-01-01
    • 2020-04-28
    • 2018-10-04
    • 2016-07-16
    • 2022-11-18
    • 2018-11-06
    相关资源
    最近更新 更多