通过过滤密钥将多个列表中的动态对象值绑定到HTML

时间:2015-05-29 11:24:29

标签: javascript json angularjs angularjs-interpolate

我从我正在使用的服务器上获取了一个三明治组件列表,然后他们回来了。

我们的三明治店有哪些部分可以与之相关的各种规则,因此大部分内容都是动态的。

我有这种json(面包对象不能保证components[0],而不是groups:[{ id:1, name:"Regular Sandwich components", components:[ { id:1, name:"Bread", inputtype:"list", options: [ {id:0,name:"Hearty Italian"}, {id:1,name:"Ciabatta"} ], ..... } }] 的元素):

sandwich:{
    bread:0,
    .....
    }

我将其映射到动态表单,并从中创建一个三明治对象,将详细信息存储在平坦的JSON中,如下所示:

<div class="sandwich-component bread">{{sandwich.bread}}</div>

我希望能够在侧栏中总结选择。我最初的努力就是:

<div class="sandwich-component bread">{{groups[0].components[?].options[sandwich.bread]}}</div>

但是那只显示面包项的id,不是很有用!

我的第二次刺伤是这样的:

Sheets(i).ListObjects(1).Range

这感觉更好,但我不知道如何找到&#39;这个组件。我已经看过this,但我正在努力弄清楚如何更改代码以便在我的示例中使用。

我实现这个目的缺少什么?

1 个答案:

答案 0 :(得分:0)

我设法用过滤器和underscore.js解决了这个问题:

app.filter('componentName', function(){
    return function(option, name, components){
        if(option === undefined||option === null){
            return ''
        }
        for (var i = 0; i<components.length;i++) {
            return _.findwhere(components[i].fields,{name:name}).options[option].name
        };
    };
});

我使用插值,如{{sandwich.bread|componentName:'bread':components}}

希望能帮助别人!