2013-12-18 36 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,这是依赖于浏览器