使用angularjs,我试图动态填充表单,然后通过POST将表单数据提交给服务器。
我在我的控制器中创建了一个数据变量(稍后发布)
$scope.data = {};
然后
<div ng-repeat="(name, attributes) in fields">
<element myvar="data" name="{{name}}" attributes="{{attributes}}" results="{{getValue(name)}}" ></element>
</div>
字段可以看起来像
{"agency":{"name_displayed":"Agency","size":"30","tag":"input","type":"text"},"department":{"name_displayed":"Department","size":"30","tag":"input","type":"text"},"description":{"cols":"50","name_displayed":"Description","rows":"4","tag":"textarea"}}
我的指令看起来像这样
demoApp.directive("element", function($compile) {
var template = function(name, attributes, results) {
// returns template string
// eg. returns '<input size="30" value="my agency" name="agency" ng-model="data.agency" type="text">'
};
return {
restrict: "E",
link: function(scope, element, attrs) {
var attributes = angular.fromJson(attrs.attributes);
var tpl = template(attrs.name, attributes, attrs.results);
element.html(tpl);
$compile(element.contents())(scope);
}
};
});
对于每个新元素,我想使用results属性更新控制器上的数据对象,以便填充元素。如果我没有直接设置元素的html,我知道如何使用ng-model属性执行此操作。
有什么想法?我可以在链接中这样做吗?