位于 HTML 文件中的角度变量中的特殊字符
Special chars in angular variable located in HTML file
在我的html中的某个时刻,我正在做这样的事情:
<li ng-repeat="favorite in favorites track by $index">
<a ng-href="javascript:void(0)" ng-click="changeSVG(favorite)">
<i class="fa fa-sitemap"></i>{{favorite}}
</a>
</li>
问题是有时ng-click="changeSVG(favorite)"
中的favorite
包含特殊字符,例如 '
.所以我在控制台中收到这样的错误:
错误: [$parse:lexerr] http://errors.angularjs.org/1.3.14/$parse/lexerr?p0=Unterminated%20quote&p1=s%2042-44%20%5B')%5D&p2=changeSVG('Process%20passageNaN'ordre%20MOB') 错误(本机)
我怎样才能防止这种情况?
我在研究它时听说过$sce,但不确定它是否符合我的需求以及如何在我的控制器中使用它。
这是changeSVG()
函数:
$scope.changeSVG = function (svgName) {
var defaultZoom = getZoomFromCarto(svgName);
$scope.currentCartography = svgName;
$scope.currentZoom = defaultZoom;
if ($scope.cartoHistory.indexOf(svgName) != -1)
$scope.cartoHistory.splice($scope.cartoHistory.indexOf(svgName), 1);
$scope.cartoHistory.unshift(svgName)
if ($scope.cartoHistory.length > 20)
$scope.cartoHistory = $scope.cartoHistory.slice(0, 20);
localStorage.setItem("cartoHistory", JSON.stringify($scope.cartoHistory));
removeEmbed();
var svgPath = "SVG/" + $scope.currentLanguage + "/" + svgName + ".svg";
lastEmbed = createNewEmbed(svgPath, defaultZoom);
}
我尝试在日志中显示 svgPath,它适用于普通文件,但是当我尝试使用名称中包含(空格)和
favorite
的文件时,什么都没有显示。
当 Angular 用字符串替换函数调用时$index
时,会出现此问题。解决方案可以使用favorites
作为函数参数,因此您可以从数组中读取CC_9控制器代码,添加可能需要的任何验证。并且不会发生角度的弦更换魔法。
像这样:
模板:
<li ng-repeat="favorite in favorites track by $index">
<a ng-href="javascript:void(0)" ng-click="changeSVG($index)">
<i class="fa fa-sitemap"></i>{{favorite}}
</a>
</li>
控制器:
$scope.changeSVG = function (index) {
// Add any validation logic here.
var svgName = favorites[index];
var defaultZoom = getZoomFromCarto(svgName);
$scope.currentCartography = svgName;
$scope.currentZoom = defaultZoom;
if ($scope.cartoHistory.indexOf(svgName) != -1)
$scope.cartoHistory.splice($scope.cartoHistory.indexOf(svgName), 1);
$scope.cartoHistory.unshift(svgName)
if ($scope.cartoHistory.length > 20)
$scope.cartoHistory = $scope.cartoHistory.slice(0, 20);
localStorage.setItem("cartoHistory", JSON.stringify($scope.cartoHistory));
removeEmbed();
var svgPath = "SVG/" + $scope.currentLanguage + "/" + svgName + ".svg";
lastEmbed = createNewEmbed(svgPath, defaultZoom);
}
相关文章:
- javascript替换换行符和特殊字符
- angularjs删除动态形式元素中的特殊字符
- 使用json_encode通过xmlhttp.responseText发送特殊字符(即caron)
- 在搜索中考虑特殊字符的
- 避免键入一些特殊字符
- Regex测试特殊字符
- 在 Javascript 中对特殊字符进行排序 (æ)
- 必须检查长度,并在文本框中允许一些特殊字符
- Javascript变量包含特殊字符
- Javascript 函数不适用于具有特殊字符的变量
- 在将会话变量转换为 javascript 变量时丢失特殊字符
- 如何解码JavaScript变量中的特殊字符
- 将特殊字符与变量javascript进行比较
- 如何检查特定字符串是否存在于变量中,在javascript中具有大小写敏感和特殊字符
- 在使用变量创建RegExp对象时添加特殊字符
- 速度模板变量名带有一个特殊字符-点
- 在JavaScript中使用特殊字符拆分变量
- 位于 HTML 文件中的角度变量中的特殊字符
- 将具有特殊字符的动态字符串变量传递给JQuery函数
- 如何将HTML字符串赋值给JavaScript中的变量,并轻松地从特殊字符转义