我有一个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,因为新版本没有这个。
看到这里OP的问题与在有人问时间(1.1.0)的最新版本重现bug:
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,因为更改日志中提到:
- $解析:允许角度表达全等(a179a9a9,#908)
脚注:我措辞上述作为问题的答案。 如果你upvoting我的回答,很遗憾,可能意味着你降落在这个线程与搜索查询像我,才发现了“意外的标记”错误你得到是不是造成问题的OP了这里...