2016-04-21 59 views
1

我有多個選擇的角度材料md-select元件,其餘像這樣定義:編程方式選擇的MD-選擇選項

在控制器的負荷我從服務器加載可用類型的陣列然後設置selectedTypesavailableTypes[0](該availableTypes加載後)如下:

$scope.promise = Types.query(query, function (types) { // Types is a $resource 
     $scope.availableTypes = types; 
     $scope.selectedTypes = [$scope.availableTypes[0]]; 
}); 

因爲selectedTypesmd-select指令的模式,我預計其將使第一個選擇選項變爲被選中。但它沒有奏效。我無法在文檔中找到以編程方式選擇md-select中的元素的任何方法。

+0

因此,您需要在頁面加載時在'md-select'中選擇一些預定義的值。對 ? – nextt1

+0

@ nextt1 - 的確如此。但是也會出現我想通過其他狀態更改(不僅是頁面加載)而以編程方式更改選擇的情況。所以我更喜歡找到不僅與頁面加載相關的解決方案。 – Avi

回答

1

由於您使用的是md-selectmultiple,因此綁定到md-select的模型必須是數組,並且您在代碼中這樣定義。

$scope.selectedTypes = [$scope.availableTypes[0]]; 

它不代表數組。您只需將您在md-option中指定的值添加到該模型。

$scope.selectedTypes = []; //defined array 
$scope.selectedTypes.push($scope.availableTypes[0]); 

查看下面的筆的工作示例。

http://codepen.io/next1/pen/qZKzMy

在你的代碼,你使用ng-value="{{type}}。由於ng-value是角度指令,因此不應使用{{ }}。查看官方文檔ngValue

+0

感謝您的回答。其實我也嘗試過這個,它不起作用。我假設我的代碼和你的代碼之間的區別是使用了一個回調,它使用我的代碼中的服務器的結果VS示例中的線性無回調流。你有這個想法嗎? – Avi

+0

我想因爲你使用'ng-value',所以你不需要'{{}}'因爲它是一個角度指令。這可能是一個原因,如果你沒有得到所需的結果。 https://docs.angularjs.org/api/ng/directive/ngValue – nextt1

+0

你是對的!這是問題!您能否在我接受之前編輯您的答案以包含此內容? (你可以留下這個例子,我認爲這對未來的其他人來說很好) – Avi