lexerr错误与非英文字母

时间:2016-09-08 14:54:07

标签: angularjs

作为Angular js的新手,由于character角色,我遇到了这个错误。

Lexer Error: Unexpected next character  at columns 8-8 [ö] in expression [item.Teközel].

我在控制器的开头使用ngSanitize

var app = angular.module('xApp', ['smart-table', 'ngSanitize']);

但仍然在页面渲染过程中它会给出上面的错误。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

@Ege Bayrak作为unicode字符出现在变量名中,发生 =DATEVALUE(MONTH(A1) & "/" & DAY(A1) & "/" & YEAR(A1)) 错误

如果JavaScript对象中只有极少数变量,您可以在视图中执行Error: [$parse:lexerr] Lexer Error: Unexpected next character at columns 8-8 [ö] in expression [ctrl.Teközel].来执行数据绑定,但这可能是一种不好的做法,或者我认为不是推荐的方法。

如果您有更多的unicode标识符或以更合适的方式执行此操作,您可以阅读此Lexer support for non-ascii literals #2174可能有其他方法以满足您的需求(以及unicode集合)的方式解决问题在那个问题#2174线程中你正在使用的字符比我在下面使用的那个。

要解决此问题,我们可以修改angular.js文件中的一个函数,该函数告诉使用的标识符,即变量名是否有效

我在AngularJS 1.5.8中修改了这个函数item['Teközel'],数据绑定工作

isValidIdentifierStart

您可以在用于添加代码的angular.js文件版本中搜索语句isValidIdentifierStart: function(ch) { return ('a' <= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z' || '_' === ch || ch === '$' || (129 <= ch.charCodeAt(0) && ch.charCodeAt(0) <= 496)); } ,以使该函数允许unicode字符

视图

'a' <= ch && ch <= 'z'

AngularJS代码

<!DOCTYPE HTML>
<html ng-app="demo">
    <head>
        <title>Demo</title>
    </head>
    <body ng-controller="DefaultController as ctrl">
        <span ng-bind="ctrl.Teközel"></span>

       <script type="text/javascript" src="scripts/angular.js"></script>
       <script type="text/javascript" src="scripts/app/main.js"></script>
    </body>
</html>

要检查标识符名称是否有效,我们可以使用此validator