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)
脚注:質問への回答として上記の言葉を使用しました。あなたが私の答えを支持しているなら、それはおそらくあなたが私が持っていたような検索クエリでこのスレッドにたどり着いたことを意味します. ...