我在 div 上有以下属性:ng-show="state.name === 'index'"
。我也试过ng-show='state.name === "index"
了,但我不断收到以下错误:
语法错误:标记“
"index"
”是表达式第 16 列中的意外标记,[state.name === "index"]
从 开始["index"]
。
为什么?
我在 div 上有以下属性:ng-show="state.name === 'index'"
。我也试过ng-show='state.name === "index"
了,但我不断收到以下错误:
语法错误:标记“
"index"
”是表达式第 16 列中的意外标记,[state.name === "index"]
从 开始["index"]
。
为什么?
ng-show
接受“AngularJS 语句”。这种类型的语句只有一个==
运算符,但这个运算符的行为类似于===
. 这有点令人困惑,但很方便,因为你不能用奇怪的类型强制射击自己。
我发现了问题。而不是"state.name==='index'"
,我应该写"state.name=='index'"
。pkoziowski.opensource 是对的,因为你不能使用条件语句,但它们的意思是你不能使用 if 语句或任何控制流语句,所以你不能这样做:
<span ng-init="if(state.name == 'o'){doFoo();}">o</span>
这个问题现在有一个新的答案:你可能使用的是旧版本的 AngularJS,因为新版本没有这个。
请参阅此处对提出问题时(1.1.0)最新版本的 OP 问题的重现:
angular.module("demo", [])
.controller("myctrl", function($scope) {
$scope.state = { name: "test" };
});
<script src="https://code.angularjs.org/1.1.0/angular.js"></script>
<div ng-app="demo" ng-controller="myctrl">
(this snippet explicitly errors out, reproducing OP's issue)<br>
<input ng-model="state.name">
<div ng-show="state.name === 'test'">visible when "test" is in the input</div>
Debug info: <pre>{{state | json}}</pre>
</div>
并在此处查看相同的代码,但版本为 1.5.6,这是撰写此答案时的最新版本:
angular.module("demo", [])
.controller("myctrl", function($scope) {
$scope.state = { name: "test" };
});
<script src="https://code.angularjs.org/1.5.6/angular.js"></script>
<div ng-app="demo" ng-controller="myctrl">
Working version<br>
<input ng-model="state.name">
<div ng-show="state.name === 'test'">visible when "test" is in the input</div>
Debug info: <pre>{{state | json}}</pre>
</div>
大概这是在 2013 年的 1.1.2 版中修复的,因为更改日志提到:
- $parse: 允许角度表达式中的严格相等 (a179a9a9, #908)
脚注:我已经将上述内容作为问题的答案。如果您赞成我的回答,那不幸的是,这可能意味着您像我一样使用搜索查询登陆该线程,只是发现您遇到的“意外令牌”错误不是由 OP 在这里遇到的问题引起的...