1

AngularJS のフィルターに問題があります。フィルターを使用して、検索ボックスからの入力に基づくオプションを表示します。すべてが機能しますが、検索するたびに (デフォルト オプション (Set with ng-model) を除く)、結果に null オプションが追加されます。

タグに設定ng-model しました<select>

ここに私のコードがあります

<div class="choosePatternHeader">
    <span>Pattern name</span>
    <input ng-model="obj.name" type="text">

</div>
<div class="select_div">
    <select  size="4"  ng-model="pattern" ng-options="p.name  for p in patterns | filter:obj">
    </select>
</div>

「パターン4」で検索した結果がこちら

<select class="ng-pristine ng-valid" ng-options="p.name for p in patterns | filter:obj"    ng-model="pattern" size="4">
<option value="?" selected="selected"></option>
<option value="0">pattern 4</option>
</select>

「パターン1」を検索すると結果が表示されます(デフォルトオプション)

 <select class="ng-pristine ng-valid" ng-options="p.name for p in patterns | filter:obj"    ng-model="pattern" size="4">
<option value="0">pattern 1</option>
</select>

ここにjsFiddleがあります

4

3 に答える 3

1

も同じことが起こる<option ng-repeat="p in patterns">ので、それが根本的な問題だと思います。

私が見つけた唯一の「解決策」は、空のオプションを定義して空の値を単純に利用すること<option value="">Please select</option>です。

于 2013-08-01T11:43:22.590 に答える
0

ng-modelが にない値に設定されている場合、AngularJS は実際にダミーのオプションを追加しますng-options。フィルターが値を返さない場合 (ng-optionsが空のng-model場合、その中に入ることはできません)、これを防ぐ方法はわかりませんが、そうである場合は、最初の項目に設定できますng-model。つまり、ダミー オプションは作成されません。ng-changeまたは同様のものを使用してこれを行うことができます。

于 2013-08-01T09:04:26.933 に答える