在Angular JS中获取加载的select标记的选项值

时间:2014-04-04 09:38:10

标签: angularjs

就像我们使用$(document).read(function()在jquery中获取select标签的值一样,我们在Angular JS中有类似的东西吗?

点击我需要将其作为参数传递的DOM元素后,我能够获取该值

    var countryId = $scope.countrySelected;
    alert("country id:"+countryId); 

    // Ajax call for listing States
    var statePromise = $http.get("ListData.php?method=state&countryid="+countryId);
    $scope.states = [];

    statePromise.success(function(data, status, headers, config) {
        for(index in data) {
            if (data[index].id) {
                $scope.states.push({
                    id:data[index].id,
                    name:data[index].name                   
                });                 
            }
        }
        $scope.statelist = $scope.states;
    });
    statePromise.error(function(data, status, headers, config) {
        alert("Loading countries failed!");
    });

HTML

    <tr><td>Country</td><td><select class="country" ng-model="countrySelected">
                    <option ng-repeat="country in countrylist" value="{{country.id}}" ng-selected="country.id">{{country.name}}</option>

但是,当我在加载时使用它时,它会提供未定义的,因为整个页面数据尚未加载。我们怎么能在这里克服?

干杯!

1 个答案:

答案 0 :(得分:1)

如果没有看到整个代码,就很难确定可能出现的问题 在任何情况下,使用ngSelected都不会更改附加到select元素的模型的值。您应该在范围内设置countrySelected属性的值 (我还建议你使用 ngOptions 指令。)

HTML:

<select ng-model="countrySelected" 
        ng-options="country.id as country.name for country in countryList">
</select>

JS:

$scope.countrySelected = $scope.countryList[0].id;
alert('Selected country ID: ' + $scope.countrySelected);

另请参阅此 short demo