javascript - 分配一个对象来选择值 - ng-options

标签 javascript angularjs

我有一个这样的对象

var myObject = {'123':'something','345':'something else'}

我需要将其渲染为:

<option value={'123':'something'}>something</option>

这是我尝试过的:

ng-options="someObj as label for (id,label) in myObject

不起作用!

模型获取“标签”,而不是整个对象。是否可以将对象分配给 SELECT 元素的 value 属性?

编辑

过滤以下形式的对象:{'123':'something','345':'something else'}

.filter('putKeysandValues',function(){
        return function(options){
            var arr = [];
            angular.forEach(options,function(value,key){
                arr.push({'key':key,'label':value})
            });
            return arr;
        }
    });

最佳答案

您需要向 ngOptions 提供一个具有键和值属性的对象。为此,您需要修改对象的结构才能真正具有此属性。

一种方法是使用为 ngOptions 返回有效数组的过滤器:

ng-options="option.label for option in data.availableOptions | putKeyAndValue"

您可以查看this plunker带有工作过滤器。

如果输入是:

[{'123':'something'}, {'345':'something else'}]

那么输出是:

[{"123":"something","id":123,"label":"something","$$hashKey":"object:3"},{"345":"something else","id":345,"label":"something else","$$hashKey":"object:4"}]

如果要删除过时的 id 属性,请使用 this filter .

如果输入相同的输入,它将返回:

[{"id":123,"label":"something","$$hashKey":"object:3"},{"id":345,"label":"something else","$$hashKey":"object:4"}]

如果您仍然需要返回新数组,则不要在过滤器上执行此操作。在这种情况下,您可以在将数据传递到 View 之前处理数据,所有这些都在 Controller 中 like this .

输入:

{'123':'something', '345':'something else'}

输出:

[{"id":123,"label":"something"},{"id":345,"label":"something else"}]

关于javascript - 分配一个对象来选择值 - ng-options,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32876817/

相关文章:

javascript - 在 ng-repeat 中隐藏和显示

javascript - 如何在 Protractor 测试中访问 Angular 对象

javascript - 在客户端设置 XSRF cookie

javascript - 来自不同 ng-repeat Angular js 的总和值

javascript - nodemon:expressjs 应用程序未启动干净退出 - 在重新启动之前等待更改

angularjs - 在没有专用 WebDriver 实现的浏览器上运行 Protractor?

php - Javascript代码多次指向相同的数字

javascript - JS 如何运行用户在 TextArea 中发布的代码?

Javascript onclick 使用 for 循环显示数组的最后一个元素

javascript - 为什么当我检查循环中的字符串是否包含在字符串数组中时,所有字符串都为 false?