2016-08-04 84 views
0

我有一種使用角度指令的輸入掩碼類型。我正在使用formattersblur事件來格式化顯示的模型值,並且我使用parsersfocus事件來刪除用戶編輯文本框時的格式。角函數解析器調用模糊

我在Internet Explorer中出現奇怪的行爲,如果您使用Tab鍵失去焦點,解析器事件將(錯誤地)觸發,因此模型值將被錯誤地更新。

這是一個角度的錯誤嗎?還是有什麼我做錯了?

這裏是一個小提琴:https://jsfiddle.net/capesean/htorwgs5/3/

注意,在IE瀏覽器,你的控制檯窗口打開,你會看到事件註銷。

此外,在早期版本的角度測試此,似乎很好地工作:

該指令代碼:

.directive("test", function() { 
    return { 
     restrict: "A", 
     require: 'ngModel', 
     link: function (scope, element, attr, ngModel) { 

      // for DOM -> model validation 
      ngModel.$parsers.unshift(function (value) { 
       console.log("parser"); 
       ngModel.$setValidity('test', true); 
       return +value; 
      }); 

      ngModel.$formatters.unshift(function (value) { 
       console.log("formatter"); 
       ngModel.$setValidity('test', true); 
       return (value === undefined ? "" : value) + "!"; 
      }); 

      element.val(scope.minutes); 

      element.bind("blur", function() { 
       scope.$apply(function() { 
        console.log("blur"); 
        element.val((scope.minutes === undefined ? "" : scope.minutes) + "@"); 
       }); 
      }); 

      element.bind("focus", function() { 
       scope.$apply(function() { 
        console.log("focus"); 
        element.val(scope.minutes); 
       }); 
      }); 

     } 
    }; 
}) 
+0

這兩個強盜似乎功能相同;使用IE 11 Windows 10.我沒有看到你在這裏描述的。 – Claies

+0

@Claies用「5!」點擊輸入初始值,然後標籤出。模型值(在按鈕之前輸出)轉換爲NaN。單擊回到輸入,將輸入值轉換爲NaN。 – Sean

+0

這似乎相關:https://github.com/angular/angular.js/blob/master/CHANGELOG.md#bug-fixes-55。 「ngModel:執行$ validate時不運行分析器」。您可能需要查看此更改並進行修復,並查看它是否存在問題,以及是否仍然存在問題。 – Claies

回答