我将尝试根据一个包含动态属性的模板动态生成一个表单。我已经接近成功,但是在检索容器元素时遇到了一些问题。这是指令:
基本上我有字段描述对象,需要根据它生成一个表单。我不太确定如何引用容器对象 - 是否需要在链接之前编译模板?此外,我实际上正在使用templateUrl,如果这很重要的话。这里还有一个fiddle。
myApp.directive('myDirective', function () {
return {
template: "<div> <label>{{Field.Name}} <div id='{{Field.Name}}_Container'></div> </label></div>",
replace: true,
restrict: 'AE',
scope: {
Field: "=fieldInfo",
FieldData:"="
},
link: function (scope, element, attr) {
var input = "<input type='" + scope.Field.Type + "' data-ng-model='FieldData[" + scope.Field.Name + "]' />";
var inputEl = angular.element(input);
var container = angular.element("#" + scope.Field.Name + "_Container"); // Doesn't work
container.append(inputEl);
}
}
});
控制器:
function MyCtrl($scope) {
$scope.Fields = [
{ Name: "field1", Type: "text", Data:null },
{ Name: "field2", Type: "number", Data:null }
];
$scope.FieldData = {}; //{fieldname: fielddata}
}
Html:
<div ng-controller="MyCtrl">
<my-directive data-ng-repeat="field in Fields" data-field-info="field">
</my-directive>
</div>
基本上我有字段描述对象,需要根据它生成一个表单。我不太确定如何引用容器对象 - 是否需要在链接之前编译模板?此外,我实际上正在使用templateUrl,如果这很重要的话。这里还有一个fiddle。
element.children
中搜索值,但我可能错了。 - Josh David Miller