AngularJs ng-options (ke,value) ng-model= "selected"不起作用



这是我的Html:

<select ng-options="value.name for (key, value) in countries track by key" ng-model="selected" >
</select>

这就是我试图处理的对象:

$scope.countries = {
    "AFG":{"name":"Afghanistan"},
    "ALB":{"name":"Albania"}
};
$scope.countriesKeys = Object.keys($scope.countries);
$scope.selected = ????;

我的问题是,我无法使ng-model选择工作,对象的结构使其难以工作。。(无法更改对象(。

最后,我的目的是用第一个选择的选项"ALB":{"name":"Albania"}使<select>成为动态的,这样当我按下其他选项使$scope.selected发生变化时。

您可以尝试以下行:

$scope.selected={"name":"Albania"}

var app = angular.module("myApp", []);
//controller
app.controller('MainCtrl', function($scope) {
    $scope.countries = {
        "AFG":{"name":"Afghanistan"},
        "ALB":{"name":"Albania"}};
        $scope.countriesKeys=Object.keys($scope.countries);
        $scope.selected="ALB";
  
        $scope.changeSelected = function(newSelected){
            $scope.selected=newSelected;
        }
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app="myApp">
  <div class="div1" ng-controller="MainCtrl">
    {{selected}}
    <select ng-options="key as value.name for (key, value) in countries" ng-change="changeSelected(selected)"  ng-model="selected"></select>
  </div>
</body>

    var getKeyByValue = function( value,array1 ) {
for( var prop in array1 ) {
    if( array1.hasOwnProperty( prop ) ) {
         if( array1[ prop ] === value )
             return prop;
    }
}

我已将此功能添加到我的控制器中

getKeyByValue($scope.selected,$scope.countries)

现在我有了<option>中的值和密钥感谢每一位尽力提供帮助的人我的主要问题是添加了"item as value.name…">

最新更新