gpt4 book ai didi

angularjs - 非英文字母的 lexerr 错误

转载 作者:行者123 更新时间:2023-12-02 23:36:42 27 4
gpt4 key购买 nike

对 Angular js 相当陌生,由于 ö 字符,我遇到了这个错误。

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

我在 Controller 的开头使用这样的 ngSanitize

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

但在页面渲染期间仍然出现上述错误。

我该如何解决这个问题?

最佳答案

@Ege Bayrak 作为 unicode 字符出现在变量名称中 Error: [$parse:lexerr] Lexer Error: Unexpected next character at columns 8-8 [ö] in expression [ctrl.Teközel].发生错误

如果 JavaScript 对象中的变量很少,您可以执行 item['Teközel'] View 中执行数据绑定(bind),但这可能是一种不好的做法,或者我认为不是推荐的方法。

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

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

我修改了这个函数isValidIdentifierStart在 AngularJS 1.5.8 中,数据绑定(bind)有效

isValidIdentifierStart: function(ch) {
return ('a' <= ch && ch <= 'z' ||
'A' <= ch && ch <= 'Z' ||
'_' === ch || ch === '$' ||
(129 <= ch.charCodeAt(0) && ch.charCodeAt(0) <= 496));
}

您可以搜索语句'a' <= ch && ch <= 'z'在您使用的 angular.js 文件版本中添加代码以使函数允许 unicode 字符

景色

<!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>

AngularJS 代码

angular
.module('demo', [])
.controller('DefaultController', DefaultController);

function DefaultController() {
var vm = this;
vm.Teközel = 'Hello, World!';
}

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

关于angularjs - 非英文字母的 lexerr 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39394145/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com