2014-01-17 83 views
5

我的模型包含一些未通过表单验证的数据(例如来自服务器的无效电子邮件地址)。我仍然想向用户展示这个无效的模型数据,以便他们有机会解决它。使用无效数据预填充AngularJS表单

小例子:

<form ng-init="email='foo'"> 
    <input type="email" ng-model="email"></input> 
    </form> 

我怎么输入,显示初始无效模型的价值?

JS小提琴:http://jsfiddle.net/TwzXV/4/

+0

嗯,这是一个很好的问题。 – allenhwkim

+0

这是一个公开的问题https://github.com/angular/angular.js/issues/1412也可以查看https://groups.google.com/forum/#!topic/angular/8Fk-Ya6Juzo – Reza

回答

1

这种行为被报告为错误。 https://github.com/angular/angular.js/issues/2841

你可以去解决此问题,通过创建一个指令到这个bug是固定的:)

我得到这个从google mailing list

http://jsfiddle.net/nalberg/XccGJ/

app.directive('displayInvalid', function($parse, $filter) { 
    return { 
     restrict: 'A', 
     require: 'ngModel', 
     link: function(scope, elm, attrs, model) { 
     var displayed = false; 
     scope.$watch(attrs.ngModel, function(newValue, oldValue, scope) { 
      // only set once... on initial load 
      if(displayed == false && oldValue != undefined){ 
      displayed = true; 
      elm.val(model.$modelValue); 
      } 
     }); 
     } 
    } 
})