簡體   English   中英

Angular 1.5自定義指令未在本機​​angular指令之前執行

[英]Angular 1.5 custom directive not being executed before native angular directives

我正在從Angular 1.2.17遷移到Angular 1.5.8,並且我注意到我編寫的指令不再像以前Angular那樣在其他任何指令之前執行了。 1.2.17。 我嘗試將指令級別的優先級設置為1500,即使是非常大的值(如9999999999999999999),也沒有任何效果。

關於如何解決此問題的任何想法嗎?

謝謝

此處提供示例代碼: DEMO

var sample = here

要查看它在1.2.x中的工作方式,只需更改角度版本

無需添加DOM事件處理程序來清理輸入,而是向ng-model控制器添加$parser來進行清理。

app.directive('nesCleanupInput', [function() {
  return {
    require: "ngModel",
    restrict: 'A',
    priority: 99999999999999999999999999999999999,
    link: function(scope, element,attrs,ngModel) {
      //USE $parsers pipeline
      ngModel.$parsers.push(function nesCleanup (value) {
        let cleanup = value.toUpperCase();
        element.val(cleanup);
        return cleanup;
      });
      /*
      //REMOVE DOM event handler
      element.on('change input keyup', function(event) {
        onChange (event);
      });
      */
});

問題在於input指令的DOM事件處理程序正在與nes-cleanup-input指令的DOM事件進行對抗。 使用$parsers管道可以避免此問題。

DENK在PLNKR上

從文檔中:

$解析器

每當控件從DOM讀取值時,作為管道執行的函數數組。 這些函數按數組順序調用,每個函數將其返回值傳遞給下一個。 最后的返回值將轉發到$validators集合。

解析器用於清理/轉換$viewValue

-AngularJS ng模型控制器API參考-$ parsers

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM