2013-12-18 127 views
0

Angular不會使用ng模型的內容更新選擇元素。綁定是單一方式select-> model。如何在傳播到視圖的模型中進行更改?角度不會使用ng模型更新選擇元素

模板:

<select class="gu2" name="coverDuration" ng-model="creditLimit.coverDuration" required="required"> 
    <option ng-value="90" selected="selected">90 days</option> 
    <option ng-value="180">180 days</option> 
</select> 
just to check: {{creditLimit.coverDuration}} 

控制器:

app.controller('CreditLimitDetailsController', function ($scope, creditLimit /* ... */) { 
    // creditLimit.coverDuration can be 90 or 180. 
    // I use a service to store the values between successive instanciations 
    $scope.creditLimit = creditLimit; 
} 

在本例中,選擇住宿沒有選項選擇,而檢查顯示90

+0

看看[ngOptions](http://docs.angularjs.org/api/ng.directive:select) 。這可能會讓事情變得更容易。 – Mouagip

+0

我看到了很多與ngOptions的答案,但這似乎矯枉過正,只有兩個靜態選項:/。嚴重的是,這樣一個簡單的東西怎麼能不被包含在角? – BiAiB

回答

2

它的工作原理:

app.controller('MainCtrl', function($scope) { 
    $scope.creditLimit = {}; //needs to be initialized 
    $scope.creditLimit.coverDuration = 90; 
}); 

並使用

value="" 

代替

ng-value="" 

Plunker

+0

它不適用於我(鉻31.0.1650.63),您使用的瀏覽器? – BiAiB

+0

@BiAiB我也在31.0.1650.63。我做了一些修改。它現在有效。用值代替ng值。 –

+1

工作,同時保持ng值。我需要這個值是一個整數,因爲它會被json序列化,並且deseralizer不允許字符串。 – BiAiB

0

如果你不想使用ngOptions就用ngSelected代替selected

<option ng-value="90" ng-selected="true">90 days</option> 

fiddle

+0

我編輯了這個問題。 'coverDuration'是可變的,可以是90或180(實際上它是由這個控制器的不同實例中的這個選擇饋送的)。我想我可以用'ng-selected =「creditLimit.coverDuration == 90」'解決你的例子 – BiAiB

0

可能需要模糊選擇之後的elemenet,這是依賴於瀏覽器