使用ng-repeat创建DOM属性

时间:2014-08-20 10:58:12

标签: javascript angularjs angularjs-directive angularjs-ng-repeat

我有一个json,我正在使用angularjs动态创建元素。

json有一组键值对,我希望将其作为元素的属性呈现。该数组可以包含自定义数据属性或事件,例如 onclick

让我们说json具有以下结构:

var arr = [
    { key : "data-id" , value : "10" },
    { key : "onclick" , value : "javascript:window.document.location.href='www.google.com'" }
]

有谁能请我提供一个解决方案,我可以将上面数组中的对象渲染为元素的属性。

注意:上面的数组 arr 将是其他对象的属性。

1 个答案:

答案 0 :(得分:0)

你应该为此编写一个简单的指令,它将设置元素的属性。例如:

app.directive('attributes', function($parse) {
    return {
        scope: { attributes: '=attributes' },
        link: function(scope, element) {

            var attributes = scope.attributes, 
                el = element[0];

            attributes.forEach(function(attr) {
                el.setAttribute(attr.key, attr.value);
            });
        }
    };
});

然后你可以像这样使用它:

<div attributes="elems">Some element</div>

将呈现:

<div attributes="elems" class="ng-isolate-scope" data-id="10" onclick="javascript:window.document.location.href='www.google.com'">Some element</div>

演示:http://plnkr.co/edit/0Yns3S4aYKWlgtpkHhMo?p=preview