Angularjs 角度-从选择元素中删除空选项

Angularjs 角度-从选择元素中删除空选项,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我有一个select元素,用于列表并绑定到数组。当数组为空时,将向select元素添加一个option元素,如下所示。这会导致列表高亮显示,我不希望这样 <select id="activeItemsSelect" ng-model="activeItems" ng-options="item.assessment_title for item in activeAssessments" size="5" class="span10" empty-select> 我正在尝试删除

我有一个select元素,用于列表并绑定到数组。当数组为空时,将向select元素添加一个option元素,如下所示。这会导致列表高亮显示,我不希望这样

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

我正在尝试删除option元素,并尝试在一个指令empty select中删除它,尽管没有成功。如何删除此选项元素


提前感谢您的回复。

您只需禁用选择按钮即可。如果ng模型不作为选项存在,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>
编辑:根据文档,从最近的角度版本开始:

:可选地,可以将值设置为空字符串的单个硬编码元素嵌套到元素中。然后,该元素将表示null或notselected选项。请参见下面的示例进行演示


当数组为空时,您甚至可能希望将该选项重新绑定到某些文本。

您可能希望手动添加一个空选项,并使用ng开关将其删除

初始化与select一起使用的模型,以便select小部件在显示时具有默认值,而不是显示为空。在您的情况下,在控制器中执行以下操作

$scope.activeItems = $scope.activeAssessments[0].assessment_title

我使用的指令支持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);
            });
        }
    }
})

谢谢有没有办法直接删除空选项元素?这句话解决了我删除第一个空元素的问题:如果ng模型不作为选项存在,Angular总是添加一个空选项。所以,请验证控制器上是否存在变量activeItems。我最初尝试了一个空选项,虽然上面没有列出,但它被替换为Angular选项。如何使用ng开关将其卸下?
.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);
            });
        }
    }
})