1

リストに使用され、配列にバインドされている選択要素があります。配列が空の場合、次に示すように、select 要素に option 要素が追加されます。これにより、リストが強調表示されますが、これは望ましくありません

<select id="activeItemsSelect" ng-model="activeItems" ng-options="item.assessment_title for item in activeAssessments" size="5" class="span10" empty-select>

オプション要素を削除しようとしていますが、ディレクティブの空の選択で削除しようとしましたが、失敗しました。このオプション要素を削除するにはどうすればよいですか?

事前にすべての返信に感謝します。

4

4 に答える 4

0

選択で使用されるモデルを初期化して、選択ウィジェットが表示されたときに空ではなくデフォルト値を持つようにします。あなたの場合、コントローラーで次のようなことを行います。

$scope.activeItems = $scope.activeAssessments[0].assessment_title
于 2013-08-07T08:06:13.153 に答える
0

あなたがしたいことは、単に選択を無効にすることです。ng-model がオプションとして存在しない場合、Angular は常に空のオプションを追加します。

<select id="activeItemsSelect" 
        class="span10"
        size="5" 
        ng-model="activeItems" 
        ng-disabled="activeItems.length == 0"
        ng-options="item.assessment_title for item in activeAssessments"
        ></select>

編集:ドキュメントごとの最近のAngularバージョンの時点で:

https://docs.angularjs.org/api/ng/directive/ngOptions : オプションで、値が空の文字列に設定された単一のハードコーディングされた要素を要素にネストできます。この要素は、null または「選択されていない」オプションを表します。デモンストレーションについては、以下の例を参照してください。

<select id="activeItemsSelect" 
        class="span10"
        size="5" 
        ng-model="activeItems" 
        ng-disabled="activeItems.length == 0"
        ng-options="item.assessment_title for item in activeAssessments">
  <option value="">Select an Option</option>
</select>

配列が空の場合、オプションを何らかのテキストに再バインドすることもできます。

于 2013-04-24T07:04:58.237 に答える
0

ng-size属性の式をサポートするこのディレクティブを使用しています:

.directive('ngSize', function () {
    return {
        restrict: 'A',
        link: function (scope, element, attrs) {
            if (element.prop("tagName") !== 'SELECT') {
                throw new Error('ngSize can only be applied to <select>-elements');
            }

            var exp = attrs.ngSize;
            scope.$watch(exp, function (newVal) {
                attrs.$set('size', newVal);
            });
        }
    }
})
于 2014-04-28T13:10:20.157 に答える