2013-04-24 98 views
1

我有一個select元素用於列表並綁定到數組。當數組爲空時,一個選項元素被添加到select元素 - 如下所示。這導致列表加以強調,這是我不想Angular - 從select元素中刪除空選項(?)

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

我試圖刪除選項元素,並試圖在指令的話,空選擇,儘管不成功。我怎樣才能刪除這個選項元素?

非常感謝您提前答覆任何答覆。

回答

0

您可能想要做的只是禁用選擇。如果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> 

編輯:依照文檔更近的角版本的:

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> 

你可能甚至想選擇重新綁定到一些文字當數組是空的。

+0

謝謝!有沒有辦法直接刪除空的選項元素? – azsl1326 2013-04-24 18:46:24

+0

這句話解決了我刪除第一個空元素的問題:「如果*** ng-model ***不作爲選項存在,Angular總是添加一個空選項。」所以,請驗證控制器上是否存在變量「activeItems」。 – 2017-07-19 08:20:09

0

您可能需要手動添加一個空的選項(角應該趕上),並使用ng-switch刪除它

+0

嗯,我最初嘗試了一個空選項(儘管它沒有在上面列出),它被替換爲Angular(?)選項。我將如何使用ng-switch將其刪除? – azsl1326 2013-04-27 02:57:49

0

初始化與選擇使用的模型,所以所示,當選擇部件將具有默認值,而不是顯示爲空。在你的情況下,在你的控制器中做下面的事情。

$scope.activeItems = $scope.activeAssessments[0].assessment_title 
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); 
      }); 
     } 
    } 
})