Javascript angularjs ng选项为空选项,而不是预选选项

Javascript angularjs ng选项为空选项,而不是预选选项,javascript,angularjs,ng-options,Javascript,Angularjs,Ng Options,在选择元素中将预选值显示为选定选项时出现问题。代码在这里 <select ng-model="data.company" ng-options="company as company.name for company in companies"></select> $scope.companies =[{ id:1, name:"Company 1" }, { id:2, name:"Company 2" }]; $scope.dat

在选择元素中将预选值显示为选定选项时出现问题。代码在这里

<select ng-model="data.company" ng-options="company as company.name for company in companies"></select>


$scope.companies =[{
    id:1,
    name:"Company 1"
},
{
    id:2,
    name:"Company 2"
}];

$scope.data = {
    company:{
        id:2,
        name:"Company 2"
    }
}

$scope.companies=[{
id:1,
名称:“公司1”
},
{
id:2,
名称:“公司2”
}];
$scope.data={
公司:{
id:2,
名称:“公司2”
}
}
问题是,当我在部分中输入select时,默认情况下会给我一个空白选项,而不是显示“Company 2”。我做错了什么

试试这个

 <select ng-model="data.company" ng-options="company.name for company in companies"></select>

  $scope.data = {
      company: $scope.companies[1];
  };

$scope.data={
公司:$scope.companys[1];
};
您希望下拉列表中显示的值为公司名称,存储的对象为公司。

在这种情况下,您需要使用,因为您直接将对象值分配给
ng模型。在这种情况下,当您将对象直接绑定到
数据时,company
(ng model)track by expression会将
ng model
中的company.id和每个
companys
元素id进行检查。若任何一个匹配,则预先选择该输入

标记

<select ng-model="data.company" 
   ng-options="company as company.name for company in companies track by company.id">
</select>


您可以尝试使用ng init

<select ng-init="data.company= companies[0]" 
        ng-model="data.company" 
        ng-options="company as company.name for company in companies"></select>


试试
$scope.data=$scope.companys[1]
这个问题已经被回答了很多次了。仍然不起作用,我会像往常一样使用
我无法用这种方法(第一种)找出为什么不起作用,因为对象存储正确。是的,这也起作用了,但是te$scope.data将由数据库检索,因此我无法覆盖该内容。我也很感激你的回答。谢谢你:)哇,这很有效,你能解释一下为什么没有track它不起作用吗?如果你把companys对象的值设置为$scope.data={company:$scope.companys[1]},你实际上不需要使用track by;请参阅我的答案更新below@Pankaj谢谢你。它起作用了,我学会了正确使用轨道的方法expression@Scott你看了angular doc的链接了吗?答案是thwre。?@Scott基本上在你的casr中你没有使用,这就是为什么它不需要跟踪。。