将ng-model分配给ng-repeat(用于下拉选择)

时间:2016-01-20 23:40:57

标签: javascript jquery angularjs date dropdown

这是参考随附的jsfiddle。 http://jsfiddle.net/n1cf938h/

如小提琴所示,ng-repeat会生成一个日期列表。我想知道哪个下拉选择用户已选择。在这种情况下如何使用ng-model?

HTML -

<div ng-app ng-controller="Ctrl">
    <select>
          <option ng-repeat="date in dates">{{date | date:'MM-dd-yyyy'}}</option>
    </select>
</div>

JS代码

function Ctrl($scope) {
$scope.baseAdd = 0;
$scope.dates = [0,1,2,3,4,5,6].map(function(day) {
dateobj = new Date(new Date().getTime() + (1000 * 60 * 60 * 24 * (day + $scope.baseAdd)));
    while(dateobj.getDay() == 6 || dateobj.getDay() == 0) {
    $scope.baseAdd++
  dateobj = new Date(new Date().getTime() + (1000 * 60 * 60 * 24 * (day + $scope.baseAdd)));
}
return dateobj;
});
console.log($scope.dates)
}

3 个答案:

答案 0 :(得分:2)

您可能希望使用ngOptions,因为它会为您实现此目的。以下是使用ngModel和ngOptions

的示例

http://jsfiddle.net/x67udrcg/

每当下拉列表发生变化时,$scope.selectedDate将保留新值

<div ng-app ng-controller="Ctrl">
  <select ng-options="date as date | date:'MM-dd-yyyy' for date in dates" ng-model="selectedDate"></select>
</div>

答案 1 :(得分:1)

您可以使用ng-modelvalue获取选择框的值,如下所示:

<select ng-model="date">
    <option value="1-1">1-1</option>
    <option value="1-2">1-2</option>
</select>

在您的情况下,这也有效:

<select ng-model="date">
    <option ng-repeat="date in dates">{{date | date:'MM-dd-yyyy'}}</option>
</select>

Jsfiddle:https://jsfiddle.net/ealonwang/na0bs2ox/

答案 2 :(得分:1)

您应该在ng-model="someVar"标记上添加<select>作为属性。

然后您可以在控制器中将其用作$scope.someVar