簡體   English   中英

角1.4.7 ngModel.NgModelController。$ parsers不調用函數

[英]angular 1.4.7 ngModel.NgModelController.$parsers not call function

我對ngModel.NgModelController。$ parsers有問題。 我在示例中進行解釋:我為輸入字段創建指令。 每次我在html中更改此輸入中的值時,它應該調用我的注冊函數。

並且此注冊功能應始終將您在輸入字段中寫的內容更改為“ A”字符,但要修改模型。

html文件

<div ng-app="myApp">
  <form>
    <input ng-model="myval1" somedir/>
  </form>
</div>

js文件

var myApp = angular.module('myApp', []);
myApp.directive("somedir", function(){
  return {
    restrict:'A',
    require: '?ngModel',
    link: function(scope, element, attrs, ngModelController) {
      ngModelController.$parsers.unshift(function(val){
        console.log("i'm here");
        ngModelController.$viewValue ="A";
        ngModelController.$render();
        return val;
      });

    }
  }
});

我准備jsfiddle進行測試:

角1.2.9: http : //jsfiddle.net/hwzxfon3/1/

角1.4.7: http : //jsfiddle.net/372re41m/1/

在角度1.2.9中,它可以正常工作。 在角度1.4.7中存在一些問題。 如何獲取:專注於輸入字段,然后按3次相同的按鈕,例如“ 1”。 第一次在輸入字段和瀏覽器控制台中顯示“ A”時, i'm here 第二次也一樣。 但是第三次​​顯​​示“ A” +按下字符(例如“ A1”)並且沒有在瀏覽器控制台中寫入, i'm here ,這意味着未調用注冊功能。

請告訴我,如果我的代碼中有錯誤(請寫更改內容),或者是角度錯誤(然后我向角度小組報告錯誤)? 我在os x(10.10.5)的最新chrome和safari中對其進行了測試。 如果它對您沒有問題,請也寫下此內容。

我將這個問題報告給了角力團隊。 完整的響應在那里https://github.com/angular/angular.js/issues/13068

簡而言之,在類似情況下,最好使用以下命令:

ngModelController.$setViewValue("A");

然后這個:

ngModelController.$viewValue ="A";

適用於angular 1.4.7的jsfiddle: http : //jsfiddle.net/455qdd6p/1/

我需要它來解決我的角度模塊https://github.com/uhlryk/angular-dynamic-number

暫無
暫無

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

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