2014-12-02 65 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

相關問題