gpt4 book ai didi

javascript - 带有 angularjs 指令的动态标签

转载 作者:行者123 更新时间:2023-12-03 16:40:41 24 4
gpt4 key购买 nike

我想在 angularjs 中创建一个元素指令,该指令从作为属性传递的 json blob 生成一个 html 元素。我已经尝试了以下几种变体......

demoApp.directive("element", function() {
return {
restrict: "E",
scope: {
attributes: "@",
name: "@"
},
template:
function(name, attributes) {
var templateString = "<" + attributes.tag;
for (attribute in attributes) {
if (attribute != "name_displayed" && attribute != "tag") {
templateString += " " + attribute + "=\"" attributes[attribute] + "\"";
}
}
templateString += " name=\"" field + "\"";
templateString += ">";
templateString += "</" + attributes.tag + ">";
return attributes.name_displayed + ": " + templateString;
}(name, attributes)
};
});

html看起来像
<div ng-repeat="(name, attributes) in fields">
<element name="{[{name}]}" attributes="{[{attributes}]}"></element>
</div>

属性 json 对象的样子
{"name_displayed":"Agency","size":"30","tag":"input","type":"text"}

一个名字看起来像
agency

看起来我无法将函数用于模板,而且看起来我无法访问属性或名称对象。

最佳答案

看看这个:http://jsfiddle.net/es4Y6/1/

var app = angular.module('hmm', []);

function ctrl($scope) {
$scope.fields = {
first: '{"name_displayed": "Agency", "size": "30", "tag": "input", "type": "text"}',
second: '{"name_displayed": "Foo", "size": "30", "tag": "input", "type": "password"}',
third: '{"name_displayed": "Bar", "size": "30", "tag": "input", "type": "number"}'
};
}

app.directive('blah', function() {

var template = function(name, attributes) {
var templateString = "<" + attributes.tag;
for (var attribute in attributes) {
if (attribute != "name_displayed" && attribute != "tag") {
templateString += " " + attribute + '="' + attributes[attribute] + '"';
}
}
templateString += ' name="' + name + '"';
templateString += ">";
templateString += "</" + attributes.tag + ">";
return attributes.name_displayed + ": " + templateString;
};

return {
restrict: "E",
link: function(scope, element, attrs){
var attributes = angular.fromJson(attrs.attributes);
var tpl = template(attrs.name, attributes);
element.html(tpl);
}
};

});

我假设“json blob”是指json字符串。如果不是,那么您的意思只是 JS 对象。在这种情况下,更新 $scope.fields并删除 angular.fromJson() .
<div ng-app="hmm">
<div ng-controller="ctrl">
<div ng-repeat="(name, attributes) in fields">
<blah name="{{name}}" attributes="{{attributes}}"></blah>
</div>
</div>
</div>

它有效,但是对于您要解决的问题,这是一种非常糟糕的方法。

关于javascript - 带有 angularjs 指令的动态标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19987722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com