次のAngularコードがあります。
<li ng-repeat="select in Items">
<foo ng-repeat="newin select.values">
{{new.label}}</foo>
Ng-if条件を使用して特定のキャラクターを探すにはどうすればよいですか:
ng-if="select.name == '?'"
文字がここにあるときにのみコードを表示するには?私が持っている値は88?77のようなもので、数字は動的ですが、疑問符は常にそこにあり、それに基づいてフィルタリングすることはできません。
ES2015 UPDATE
ES2015には、文字列に別の文字列が含まれているかどうかを確認する String#includes
メソッドがあります。これは、ターゲット環境でサポートされている場合に使用できます。 needleがhaystackで見つかった場合、メソッドはtrue
を返し、そうでない場合はfalse
を返します。
ng-if="haystack.includes(needle)"
ここで、needle
はhaystack
で検索される文字列です。
ブラウザの互換性 MDNの表を参照してください。これはIEおよびOperaではサポートされていないことに注意してください。この場合、 polyfill を使用できます。
String#indexOf
を使用して、haystackのneedleのインデックスを取得できます。
インデックスを-1
と比較して、needleがhaystackにあるかどうかを確認できます。
ng-if="haystack.indexOf(needle) > -1"
ng-if="select.name.indexOf('?') !== -1"
Angularjs自体はjavascriptフレームワークであるため、すべてのjavascriptメソッドはangularjsに適用できます。したがって、angularディレクティブ内でindexOf()を使用できます
<li ng-repeat="select in Items">
<foo ng-repeat="newin select.values">
<span ng-if="newin.label.indexOf(x) !== -1">{{newin.label}}</span></foo>
</li>
//where x is your character to be found
コントローラ関数でそのようなチェックを行います。 HTMLは、ロジックのない読みやすいマークアップでなければなりません。
コントローラ:
angular.module("myApp")
.controller("myController",function(){
var self = this;
self.select = { /* ... */ };
self.showFoo = function() {
//Checks if self.select.name contains the character '?'
return self.select.name.indexOf('?') != -1;
}
});
ページの例:
<div ng-app="myApp" ng-controller="myController as vm">
<p ng-show="vm.showFoo()">Bar</p>
</div>