2014-12-02 57 views
0

我试图创建一个server-validate指令,它通过向我们的服务器后端提交部分表单并解析响应来异步验证表单输入。我希望用这样的:如何在另一个链接中指定一个角度指令?

<input type="text" ng-model="stuff" server-validate /> 

(我用的包装<form>另一个指令,指定哪个URL使用等..结合吧)为了使表单不提交验证请求在页面加载时,我需要设置ng-model-options="{ updateOn: 'blur' }", but I'd like to *not* have to do this on every element in the form. Instead, I'd like the server-validate`来指定这种行为。

我试过link函数中的一些东西,例如attrs['ngModelOptions'] = '{updateOn: "blur"}'attrs['ngModelOptions'] = { updateOn: 'blur' },但都没有任何效果。

有没有办法通过我自己的指令来应用这个,而不必指定其他任何东西?

回答

0

他们有你的文档要在什么一个很好的例子:

directive('contenteditable', ['$sce', function($sce) { 
    return { 
    restrict: 'A', // only activate on element attribute 
    require: '?ngModel', // get a hold of NgModelController 
    link: function(scope, element, attrs, ngModel) { 
     if (!ngModel) return; // do nothing if no ng-model 

     // Specify how UI should be updated 
     ngModel.$render = function() { 
     element.html($sce.getTrustedHtml(ngModel.$viewValue || '')); 
     }; 

     // Listen for change events to enable binding 
     element.on('blur keyup change', function() { 
     scope.$evalAsync(read); 
     }); 
     read(); // initialize 

     // Write data to the model 
     function read() { 
     var html = element.html(); 
     // When we clear the content editable the browser leaves a <br> behind 
     // If strip-br attribute is provided then we strip this out 
     if (attrs.stripBr && html == '<br>') { 
      html = ''; 
     } 
     ngModel.$setViewValue(html); 
     } 
    } 
    }; 
}]); 

所以看起来像什么,你会改变将是从element.on删除KEYUP和改变事件的唯一的事情。然后在你的模糊中,你也会做服务器请求。 ngModelController上的文档:https://docs.angularjs.org/api/ng/type/ngModel.NgModelController

相关问题