Angularjs 带有轨迹的角度ng选项将创建未知选项元素

Angularjs 带有轨迹的角度ng选项将创建未知选项元素,angularjs,ng-options,angularjs-track-by,Angularjs,Ng Options,Angularjs Track By,我的目标是生成一个选择列表,该列表的选项值设置为“我的对象”属性之一。将“按绑定轨迹”选项添加到ng options指令时,将创建一个未知选项元素,它是唯一显示“已选定”的选项。这种行为在angular v1.3(我正在使用的版本)中。在v1.4中,它仍然会创建未知项,但会更改显示以显示不同的选定项。在这两种情况下,它都不会将下拉列表的初始状态设置为与模型值相对应 角度模块('plunker',[]) .controller(“MyCntrl”,功能($scope){ $scope.myCo

我的目标是生成一个选择列表,该列表的选项值设置为“我的对象”属性之一。将“按绑定轨迹”选项添加到ng options指令时,将创建一个未知选项元素,它是唯一显示“已选定”的选项。这种行为在angular v1.3(我正在使用的版本)中。在v1.4中,它仍然会创建未知项,但会更改显示以显示不同的选定项。在这两种情况下,它都不会将下拉列表的初始状态设置为与模型值相对应


角度模块('plunker',[])
.controller(“MyCntrl”,功能($scope){
$scope.myColor=“rd”//红色
$scope.colors=[
{名称:'black',代码:'bk'},
{名称:'white',代码:'wh'},
{名称:'red',代码:'rd'},
{名称:'blue',代码:'bl'},
{名称:'yellow',代码:'yl'}
];
});


当前选定:{{myColor}}
在v1.4中,它仍然不设置初始状态,但在选择新值时,它将更改显示。我觉得奇怪的是,这不起作用,这不是一个问题


如果您想知道,我们希望这样做,以便选项值是我们的测试自动化可以输入的已知代码,并且我们希望模型值是代码。这似乎是一件相当标准的事情。

您需要将该值设置为控制器中的整个对象

   $scope.myColor ={name:'red', code:'rd'};

然后它将正确选择。

您需要将该值设置为控制器中的整个对象

   $scope.myColor ={name:'red', code:'rd'};

然后它会正确地选择。

问题是我的模型(来自数据库)只有代码。标签来自本地化的内容管理系统。因此,我在模型中设置和检索所选值所需的全部是代码。我不确定这是一个问题的原因。如果您的代码看起来像上面给出的示例,那么无论您是否只拥有或需要代码,这都是解决方案。如果您的模型包含同时具有名称和代码的对象,并且最初只有代码,只需在列表中找到包含该代码的对象并将其设置为当前值即可。当您将数据发送回应用程序时,只需取出所选项目的代码并发送即可。是的,这是可行的,但需要更多不需要的编码。没有理由说,当您向binding语句添加track by时,列表不能仅绑定到代码。问题是我的模型(来自db)只有代码。标签来自本地化的内容管理系统。因此,我在模型中设置和检索所选值所需的全部是代码。我不确定这是一个问题的原因。如果您的代码看起来像上面给出的示例,那么无论您是否只拥有或需要代码,这都是解决方案。如果您的模型包含同时具有名称和代码的对象,并且最初只有代码,只需在列表中找到包含该代码的对象并将其设置为当前值即可。当您将数据发送回应用程序时,只需取出所选项目的代码并发送即可。是的,这是可行的,但需要更多不需要的编码。当您将track by添加到binding语句时,没有理由认为列表不应仅绑定到代码。