ngOptions "track by" expression
ngOptions "track by" expression
我正试图使用'track-by'表达式在对象数组中按id跟踪选择。然而,我似乎无法让它像我认为的那样发挥作用。
//ids from server
$scope.serverDTO = ['1','2','3'];
//composed objects from the ID set
$scope.composedData = [{id:1,name:"test"},{id:2,name:"test"},{id:3,name:"test"}];
<!-- select box -->
<select ng-model="serverDTO" ng-options="item as item.name for item in composedData track by item.id"></select>
因此,根据文档,我认为加载时的options指令会看到serverDTO具有1、2和3的"track-by"ID,并预先选择了这些ID。在用户修改选择后,我需要做这样的事情来将数组返回到服务器-
//recreate proper DTO [1,2,3];
$scope.serverDTO = $scope.serverDTO.map(function(val){
return val.id;
});
我是不是偏离了应该如何工作?
track by
只是在内部帮助Angular进行数组排序。选项的值由第一个参数定义(在您的情况下为item
(。如果您希望它是按id,那么您应该使用item.id as item.name for item in items
当在对象和模型的ng选项数组中也使用对象时,"track-by"是有用的。但您不希望通过模型中对象的引用来跟踪选项。使用"track by"可以指出,您可以通过所需的模型字段来跟踪选项。
在您使用"track by"$scope.serverDTO的情况下,它必须类似于{id:1,name:"test"}
相关文章:
- 铬:“;未捕获的语法错误:意外的标记:"
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 使用“+="操作人员
- //而不是在src=“”上使用http://"属性
- "未捕获的语法错误:意外的标记}"
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- "实例范围”;TypeScript类的getter/setter
- Javascript复选框函数:;缺少:在属性id之后"
- "“;变量未引用正确的对象
- "日期“;AJAX请求返回的类型值未定义
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- Soundcloud api"未捕获的类型错误:无法读取属性'uri'“未定义”;
- "工具提示"jQuery插件坏了
- "锻造;React中的表达式
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- 如何提取“;href"最近列表项中的属性值
- CKEditor如何允许href="javascript:void(0)"在小部件中
- 插入“;img src"在javascript中