2015-10-29 100 views
1

我一直在試圖設置選擇框的默認選擇選項,不知道我在哪裏做錯了。 這裏是我的htmlAngularjs selectedOption不能正常工作

<span ng-controller="sizeController" style="width:137px; float:left; margin:15px 0 0 10px; "> 
 
    <label for="sizeSelect" style="float:left; color:orange">Size:</label> 
 
    <select name="sizeSelect" id="colorSelect" style="width:90px" ng-model="size" ng-change ="onSizeChange(size)"> 
 
    <option ng-repeat="sizeoption in data.sizeOptions" value="{{sizeoption.id}}">{{sizeoption.name }}</option> 
 
    </select> 
 
</span>

控制器放在這裏

function sizeController($scope, $rootScope) { 
 
$scope.data = { 
 
sizeOptions: [ 
 
    {id: 'Small', name: 'Small'}, 
 
    {id: 'Medium', name: 'Medium'}, 
 
    {id: 'Large', name: 'Large'}, 
 
    {id: 'XLarge', name: 'XLarge'} 
 
], 
 
    selectedOption: {id: 'Small', name: 'Small'} 
 
}; 
 
$scope.onSizeChange = function(size){ 
 
    $rootScope.size = size; 
 
}; 
 
}

默認情況下,第一個值的選擇框總是空空的。 不知道爲什麼。 在此先感謝

+0

它是空的,因爲你的NG-模型變量「大小」 didnt存在於控制器和「未定義」是不是在你optionslist所以角增加值=」 ?」到選項列表(空條目)。 要將select設置爲預定義值,您只需將ng-model可變大小設置爲所需的值。 –

回答

1

請通過自己使用ng-options而不是ng-repeat來幫助自己。

<select name="sizeSelect" 
    id="colorSelect" 
    style="width:90px" 
    ng-model="size" 
    ng-change="onSizeChange(size)" 
    ng-options="sizeoption.id as sizeoption.name for sizeoption in data.sizeOptions"> 
</select> 

初始化通過設置模型直接

$scope.size = "Small"; 
+0

@lcycool非常感謝您的回答。 我已經解決了我的問題。但是我沒有明確指出使用「ng-option」而不是

+0

雖然這是一個有效的手動解決方案,但是使用內置的ng -options'。我最喜歡的功能是你可以直接在'ng-model'中設置'id',這樣在讀寫數據時可以節省一層翻譯。 – Icycool

0

我爲您制定解決方案。使用ng-option進行角度選擇。

Solution

這裏有更多關於ng-option

ngOption

0

在選擇框中的第一個值始終是空的,因爲它是不確定的。選擇下拉菜單(ng-model="size")對應於size模型的屬性,該屬性最初爲undefined。將範圍中的大小初始化爲下面可能的值之一,它將刪除未定義的第一個空白選項。

$scope.size = 'Medium'; 

但即使你初始化大小到第二或第三個選項,它仍然會選擇第一個選項,現在你必須使用ng-select選擇正確的值ng-selected="size == sizeoption.id"

完整的解決方案here