私はプロジェクトでangularjsを使用しており、ng-optionsを使用して生成しています。
最初にページがリロードされ、オプション要素が選択されていない場合、次のようなHTMLが生成されます。
<select size="3" ng-model="item" ng-options="s.name for s in itemlist">
<option value="?" selected="selected"></option>
<option value="0">Item 1</option>
<option value="1">Item 2</option>
<option value="2">Item 3</option>
</select>
しかし、要素(例:アイテム2)を選択すると、最初の空白の選択はなくなります。 ng-modelがselect値によって設定されているときに起こることを知っています。ただし、ユーザーがフィルターをリセットできるように、最初に常に空白を選択します。
前もって感謝します。
これはあなたのために仕事をします:
<select size="3" ng-model="item" ng-options="s.name for s in itemlist">
<option value="">Select Option</option>
</select>
「null」をオプションの1つの有効な値として扱う(「null」が次の例のtypeOptionsの項目の値であると想像してください)場合、自動的に追加されることを確認する最も簡単な方法を見つけましたオプションが隠されているのは、ng-ifを使用することです。
<select ng-options="option.value as option.name for option in typeOptions">
<option value="" ng-if="false"></option>
</select>
なぜng-ifでng-hideではないのですか?上記の最初のオプションをターゲットとするcssセレクターが、非表示のオプションではなく、「実際の」オプションをターゲットにすることを望むためです。 e2eテスト用に分度器を使用し、(何らかの理由で)by.css()を使用して選択オプションをターゲットにする場合に役立ちます。
ケビン-スータム
ng-options
を使用せずに、代わりにng-repeat
を使用して、最初のオプションを空白にすることができます。以下の例を参照してください。
<select size="3" ng-model="item">
<option value="?" selected="selected"></option>
<option ng-repeat="s in itemlist" value="{{s.value}}">{{s.name}}</option>
</select>
最良のオプションは、アイテムリストの最初のアイテムとして空白のアイテムを含めることです。
上記のソリューションは、ジャンクデータを含むモデルを破損します。ディレクティブを使用して、正しい方法でモデルをリセットしてください。JS:オプションの選択
Directive"
.directive('dropDown', function($filter) {
return {
require: 'ngModel',
priority: 100,
link: function(scope, element, attr, ngModel) {
function parse(value) {
if (value) {
if(value === "")
{
return "crap"
}
else
{
return value;
}
} else {
return;
}
}
ngModel.$parsers.Push(parse);
}
};
});
コントローラー
$scope.item = '';
$scope.itemlist = {
'' = '',
'Item 0' = 1,
'Item 1' = 2,
'Item 2' = 3
};
[〜#〜] html [〜#〜]
<select data-ng-model="item" data-ng-options="v as k for (k, v) in itemlist"></select>
<select ng-model="dataItem.platform_id"
ng-options="item.id as item.value for item in platformList"
ng-init="dataItem.platform_id=dataItem.platform_id||platformList[0].id"></select>