AngularJS下拉 - 自动选择不起作用

时间:2015-07-06 08:21:56

标签: javascript angularjs ng-options

在控制器中

$scope.persons = [{"id": 1, "name": "Diso"}, {"id": 2, "name": "Tatalop"}];

在创建页面我有这些代码。

<select name="person" ng-options="person.id as person.name for person in persons" ng-model="job.person_id">
    <option value="">Select a Person</option>
</select>

上面的下拉列表会显示人name,其值为人id。如果我提交表单,那么我正在找人id。这是完美的。

在更新页面我想使用相同的代码(相同的控制器和相同的html文件)。此下拉列表现在需要自动选择。假设页面加载下拉时应自动选择第二个人。为了使它成功,我在控制器中写了$scope.job.person_id = $scope.persons[1];

现在的问题是,如果我从person.id as删除ng-options,那么只有自动选择功能有效,否则它无法正常工作。现在,如果我删除person_id as,那么我会得到整个对象({"id": 2, "name": "Tatalop"})作为下拉的结果。但我只想要那个人id

怎么做?我错过了什么吗?任何人都可以建议我吗?

2 个答案:

答案 0 :(得分:2)

请检查这个小提琴可能会有所帮助 http://jsfiddle.net/linkolen/cuvjfept/

angular.module('myApp', []);

function TestCtrl($scope) {
    $scope.persons = [{"id": 1, "name": "Diso"}, {"id": 2, "name": "Tatalop"}];
    $scope.job = $scope.persons[1].id;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js"></script>
<div ng-app="myApp" ng-controller="TestCtrl">
    <select name="person" ng-options="person.id as person.name for person in persons" ng-model="job">
    <option value="">Select a Person</option>
</select>
    this is the selected id: {{job}}
 <div>

答案 1 :(得分:1)

请参阅此示例:http://jsfiddle.net/kevalbhatt18/gfbksn8L/1/

ng-change 功能中,我只获得ID。

var myApp = angular.module('myApp', []);

function MainCtrl($scope) {
    $scope.persons = [{"id": 1, "name": "Diso"}, {"id": 2, "name": "Tatalop"}];
    $scope.person_id = $scope.persons[1].id;
    $scope.getValue = function(t){
    console.log(t)

    }
}