小编Rob*_*ink的帖子

将表单重置为原始状态(AngularJS 1.0.x)

将表单字段重置为原始状态(重置脏状态)的功能在AngularJS 1.1.x的路线图中.不幸的是,目前的稳定版本缺少这样的功能.

将所有表单字段重置为AngularJS 1.0.x的初始原始状态的最佳方法是什么?

我想知道这是否可以通过指令或其他简单的解决方法来解决.我更喜欢解决方案,而无需触及原始的AngularJS源.为了澄清和证明这个问题,链接到JSFiddle.http://jsfiddle.net/juurlink/FWGxG/7/

想要的功能在路线图上 - http://blog.angularjs.org/2012/07/angularjs-10-12-roadmap.html
功能请求 - https://github.com/angular/angular.js/issues/856
建议的解决方案Pull请求 - https://github.com/angular/angular.js/pull/1127

更新了可能的解决方法

足够好的解决方法?

我只是想通了我可以重新编译HTML部分并将其重新放入DOM中.它的工作原理很适合临时解决方案,但也可以在评论中提到@blesh:

控制器应仅用于业务逻辑,而不是DOM!

<div id="myform">
  <form class="form-horizontal" name="form">
  </form>
</div>
Run Code Online (Sandbox Code Playgroud)

在我的控制器上resetForm():

  • 保存原始未触动的HTML
  • 重新编译保存的原始HTML
  • 从DOM中删除当前表单
  • 将新编译的模板插入DOM

JavaScript:

var pristineFormTemplate = $('#myform').html();
$scope.resetForm = function () {
    $('#myform').empty().append($compile(pristineFormTemplate)($scope));
}
Run Code Online (Sandbox Code Playgroud)

angularjs

63
推荐指数
3
解决办法
7万
查看次数

标签 统计

angularjs ×1