0

我想使用来自 JSON(它在我的控制器中定义)的属性(选择 id,选择类)创建一个选择。

有办法做到这一点吗?或者我需要用选择的代码做动态部分吗?

假设我不知道 JSON 中有哪些属性。

谢谢!

更新:

例如,如果我有这个 JSON:

{ "topology" : [ 
        { "name": "id", "value":"topology_id"  },
        { "name": "class", "value": "topology_class1 topology_class2" },
        { "name": "diasbled", "value": "disabled" } 
    ]
}

我想获得这个选择标签:

<select id="topology_id" class="topology_class1 topology_class2" disabled="disabled"></select>

如果我有另一个带有另一个属性的 JSON,那么这些另一个属性将在我的选择标记中。

4

1 回答 1

1

使用更新后的 JSON 文件,您可以执行以下操作:

// Your template
<select dynamic-attributes='topology'></select>

// The dynamic attributes directive
angular.module('yourModule')
    .directive('dynamicAttributes', ['jsonData', function (jsonData) {
        return function (scope, element, attrs) {
            // Get the attribute data from a service.
            var attributes = jsonData.get(attrs.dynamicAttributes);
            // Add each of the attributes to the element.
            attributes.forEach(function (attribute) {
                element.attr(attribute.name, attribute.value);
            });
        }
    }]);

// The jsonData service
angular.module('yourModule')
    .service('jsonData', function () {
        // This would really come from the server.
        var json = { 
            "topology" : [ 
                { "name": "id", "value":"topology_id"  },
                { "name": "class", "value": "topology_class1 topology_class2" },
                { "name": "diasbled", "value": "disabled" } 
            ]
        };

        // Public API
        return {
            get: function (name) {
                return json[name];
            }
        };
    });

这是代码的工作小提琴:http: //jsfiddle.net/nfreitas/SmWE8/(不要介意样式,它在那里表明正在添加属性。)

于 2013-04-19T14:41:39.947 回答