Angularjs 如何使ng select正常工作

Angularjs 如何使ng select正常工作,angularjs,Angularjs,我有一个ng select元素: <body ng-controller="MainCtrl"> <select ng-model="selectedItem" ng-model="selectedItem"> <option value="-1" selected>- manual -</option> <option ng-repeat="(key, value) in items">{{val

我有一个ng select元素:

  <body ng-controller="MainCtrl">
    <select ng-model="selectedItem"  ng-model="selectedItem">
      <option value="-1" selected>- manual -</option>
      <option ng-repeat="(key, value) in items">{{value.Name}}</option>
    </select>
  </body>
这里有工作

在ng select的内部,我有两个选项:静态(
manual
-)和ng repeat元素生成的选项

我的问题是:当用户选择ng生成的选项时,重复
$scop.selectedItem
获取所选项目的
名称
,同时我需要设置所选元素的
Id

例如:

如果在上面的plunker中,用户从ng选择元素
two
中选择
$scop.selectedItem
将获得
two
项目的名称,而我需要
$scop.selectedItem
获取所选项目的
Id


您知道如何使
$scop.selectedItem
获取所选项目的
Id
吗?

请查看
ng options
指令。您可以传递一个类似列表理解的表达式来提取所需内容

例如:

<select ng-options="item as item.label for item in items track by item.id" ng-model="selected"></select>


请查看
ng options
指令。您可以传递一个类似列表理解的表达式来提取所需内容

例如:

<select ng-options="item as item.label for item in items track by item.id" ng-model="selected"></select>


正如Delapouite所说,您应该使用ng选项。我已经更新了您的应用程序来实现这一点

var-app=angular.module('plunker',[]);
应用程序控制器('MainCtrl',函数($scope){
$scope.items=[{name:'-manual-',id:-1},
{name:'one',id:30},
{name:'two',id:27},
{name:'threex',id:50}];
$scope.selectedItem=$scope.items[0];
});

正如Delapouite所说,您应该使用ng选项。我已经更新了您的应用程序来实现这一点

var-app=angular.module('plunker',[]);
应用程序控制器('MainCtrl',函数($scope){
$scope.items=[{name:'-manual-',id:-1},
{name:'one',id:30},
{name:'two',id:27},
{name:'threex',id:50}];
$scope.selectedItem=$scope.items[0];
});
试试这个

 <option ng-repeat="(key, value) in items" key="{{value.Id}}" value="{{value.Id}}">{{value.Name}}</option>
{{value.Name}
我所做的只是设置了key和value={{value.Id}},selectedItem将拾取它

这是

试试这个

 <option ng-repeat="(key, value) in items" key="{{value.Id}}" value="{{value.Id}}">{{value.Name}}</option>
{{value.Name}
我所做的只是设置了key和value={{value.Id}},selectedItem将拾取它


以下是我建议使用
ng选项的,并在
$scope.items
中推送默认值(手动)

我使用
ng init
将select的默认值设置为-manual-

<body ng-controller="MainCtrl">
    <select ng-model="selectedItem" ng-options="i.Id as i.Name for i in items" ng-init="selectedItem = items[0].Id"></select>
    selected item: {{selectedItem}}
</body>

这里有一个

我建议使用
ng选项
并在
$scope.items
中推送默认值(手动)

我使用
ng init
将select的默认值设置为-manual-

<body ng-controller="MainCtrl">
    <select ng-model="selectedItem" ng-options="i.Id as i.Name for i in items" ng-init="selectedItem = items[0].Id"></select>
    selected item: {{selectedItem}}
</body>

这里有一个

使用
as
track by
可能会破坏绑定。同时使用
as
track by
可能会破坏绑定。另外,与您的问题无关,您确实不应该将您的属性资本化。大写名称应保留给类。其中一个答案是否解决了您的问题?:)另外,与你的问题无关,你真的不应该把你的财产资本化。大写名称应保留给类。其中一个答案是否解决了您的问题?:)