我一直在寻找关于如何删除 AngularJS 总是在选择中呈现的空选项的解释。I have found lots of information doing this when the options are derived from a JSON array placed directly in the code, but I can't find anything about removing this empty option when working with data objects.
假设我的数据库中有对象“foo”,而“foo”同时具有“名称”和“bar_id”。
有人可以给我一个关于使用数据对象执行此操作的线索吗?
http://jsfiddle.net/MTfRD/3/(这是上面链接的SO问题中其他人的小提琴;代码不是我的,而是取自那个小提琴。)
JS:
function MyCtrl($scope) {
$scope.typeOptions = [
{ name: 'Feature', value: 'feature' },
{ name: 'Bug', value: 'bug' },
{ name: 'Enhancement', value: 'enhancement' }
];
$scope.form = {type : $scope.typeOptions[0].value};
}
我想得到 foo.name 和 foo.bar_id。我希望 foo.name 是选项标签,而 foo.bar_id 是值(例如<option value="foo.bar_id">foo.name</option>
。对于每个 foo,foo.bar_id 将成为记录中的一个识别参数,以拉起并显示“更改时”(立即选择的选项)。
我已经尝试了我能想到的一切来设置它,但似乎没有任何效果。最糟糕的是,它要么默默地失败,让我没有任何迹象表明我做错了什么,要么抱怨 foo 不是一个对象,这让我无休止地沮丧。(我向你保证,“foo”是由我正在处理的实际代码中的 AJAX 请求加载的,并且在其他任何地方都可以作为对象正常工作——尽管 NDA 禁止我共享实际代码,抱歉。)
使用来自另一个线程的上述示例,我知道我会ng-model="typeOptions"
在模板中的 select 标记中分配类似的内容,但是我将如何让“typeOptions”访问 foo 并使 foo.name 选项标签和 foo.bar_id 选项值? 此外,选项的默认角度值(看起来像生成的索引)对我来说很好,但我仍然需要调用 foo.bar_id 来完成任务,所以它必须“在某个地方”。
任何帮助,将不胜感激; 目前,我在选项本身中遇到了骇人听闻的 ng-repeat,我知道这不是最佳实践。而且我在 Angular 上还很新,仍然觉得它有些混乱,所以你的答案更简单、更直接,我就能更好地成功使用它们。谢谢!