[英]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
管道可以避免此問題。
從文檔中:
$解析器
每當控件從DOM讀取值時,作為管道執行的函數數組。 這些函數按數組順序調用,每個函數將其返回值傳遞給下一個。 最后的返回值將轉發到
$validators
集合。解析器用於清理/轉換
$viewValue
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.