2016-10-01 145 views
1

这是我的HTML:AngularJs NG选项(柯值)NG-模型= “选择” 不工作

<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工作,对象的结构使它很难..(不能更改对象)。

最后我的目的是使<select>与第一个选定的选项"ALB":{"name":"Albania"},并使其动态,所以当我按其他选项,使$scope.selected更改。

+0

感谢那些实际上帮助, 但$范围。选择现在 选定=对象{名称:“阿富汗”},我想也有钥匙(“AFG”) – Alex

回答

1

你可以试试下面一行:

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

嗨, 首先我删除了“项目为...”和动态我的$范围.selected现在选择=对象{名称:“阿富汗”} ,我也想要钥匙(AFG)它真的很重要 – Alex

+0

(DOM输出) (使用你的方式)所选的仍然不起作用 – Alex

+0

使用“键为(键,值)在国家跟踪键” 和设置$ scope.selected ='AFG' –

0

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>

0
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> 感谢每一个都价值,关键谁试图帮助 大多是我的问题是,我补充说:“项目作为value.name ......”