作为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']);
但仍然在页面渲染过程中它会给出上面的错误。
我该如何解决这个问题?
答案 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