Angularjs在js中绑定动态表单构建
Angularjs bind dynamic form bulit in js
我有一个表单,我想在运行时通过js构建它,并在angularjs中的表单控制器中使用它
正如您在下面的示例中看到的,它没有被抛出为html,我希望它被绑定到model
变量。http://jsfiddle.net/g6m09eb7/
<div>
<form ng-controller="TodoCtrl" ng-submit="blabla()">
<div ng-repeat="field in fields">{{field.input}}</div>
</form>
</div>
function TodoCtrl($scope) {
$scope.model = {
'FirstName': 'Test',
'LastName': 'Test Last'
}
$scope.fields = [{
input: '<input type="text" ng-model="model.FirstName">'
}, {
input: '<input type="text" ng-model="model.LastName">'
}, ];
}
首先,我将向您展示如何在您尝试完成它时使其发挥作用,以便提供信息。这不是你应该用来解决整体问题的方法。本例将获取文档中的html,但不会使用Angular进行编译。要做到这一点,您必须有一个不同的指令,像这样(单击)。这是一种糟糕的做法。
angular.module('myApp', [])
.controller('TodoCtrl', function($scope) {
$scope.fields = [{
input: '<input type="text" ng-model="model.FirstName">'
}, {
input: '<input type="text" ng-model="model.LastName">'
}, ];
})
// filter to make Angular trust the html
.filter('safeHtml', ['$sce', function ($sce) {
return function (text) {
return $sce.trustAsHtml(text);
};
}])
;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<form ng-app="myApp" ng-controller="TodoCtrl">
<!-- use ng-bind-html on trusted html to bind it (see the js) -->
<div ng-repeat="field in fields" ng-bind-html="field.input | safeHtml"></div>
</form>
相反,你可以很自然地做到这一点。只需使用对象的属性作为ng-repeat
的条件。简单干净!
angular.module('myApp', [])
.controller('TodoCtrl', function($scope) {
$scope.model = {
'FirstName': 'Test',
'LastName': 'Test Last'
};
})
;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<form ng-app="myApp" ng-controller="TodoCtrl">
<div ng-repeat="(key,value) in model">
<input type="text" ng-model="model[key]"/>
</div>
</form>
请确保避免将控制器与DOM操作联系起来。如果您在控制器中有html片段,那么您的方法可能偏离了轨道。DOM操作应该完全通过指令来完成。
相关文章:
- jQuery动态表单显示在select选项上
- 使用AJAX在Rails中提交动态表单的最佳方式是什么
- Small Javascript从动态表单中删除多个元素的问题
- Php,Javascript-动态表单id's和动态验证
- 在动态表单的可见部分中,如何使用javascript生成所需的某些字段
- AngularJS中的动态表单验证 - 是否有更好的解决方案/方法
- 如何添加动态表单元素但保留其值(JS)
- jquery在动态表单输入上验证插件不起作用
- Angularjs在js中绑定动态表单构建
- 正在使用ng消息验证动态表单
- 将动态表单元素限制为最多10个记录
- onchange使用PHP和jQuery对动态表单输入进行计算
- 如何将动态表单保存到数据库/编辑回表单
- 生成动态表单输入字段,并在angularJS中以数组形式收集字段数据
- 基于select选项的javascript动态表单生成
- 具有大型动态表单的主干js
- 如何在Struts1中映射和读取我的动态表单条目
- 如何在java框架(JSF)中基于URL的json响应生成动态表单
- Handlebar.js模板,使用Undercore.js-Zendesk应用程序进行动态表单输入
- 如何针对生成的所有动态表单的Input元素