2014-10-07 44 views
0

使用角度1.3.x時,我在分配給輸入的指令中具有解析器。使用角度1.3.x解析角度中斷時的輸入值

當用戶在指令中輸入文本時,已運行已推送到$ parses數組的函數。然而,當ngModel.$setViewValue(res);被稱爲相同的解析函數立即調用這角1.2.x的

ngModel.$parsers.push(function (inputValue) { 
    var originalVal = element.val(); 

    // do some logic to originalVal and set it as new ViewValue if changed 

    if (originalVal != inputValue) { 
     ngModel.$setViewValue(res); 
     ngModel.$render(); 
    } 
}); 

任何想法都沒有發生?

+0

什麼是你想要做什麼呢? – Blackhole 2014-10-07 18:56:49

+0

@Blackhole基本上,當用戶鍵入一個千分隔符數字逗號將被添加到文本 – SuperUberDuper 2014-10-07 19:00:49

+0

是不是$格式的使用情況而不是$分析器? – JoseM 2014-10-08 13:12:15

回答

2

的$解析器文檔狀態的功能

陣列來執行,作爲一個管道,每當控制 從DOM讀取值。每個函數被調用,依次,將 的值傳遞給下一個。最後一個返回值用於填充模型 。用於清理/轉換值以及 驗證。爲了進行驗證,解析器應該使用$ setValidity()更新狀態的有效性 ,併爲無效值返回undefined。

重點是我的。所以你需要返回一個值。

ngModel.$parsers.push(function (inputValue) { 
    var originalVal = element.val(); 

    // do some logic to originalVal and set it as new ViewValue if changed 

    if (originalVal != inputValue) { 
     ngModel.$setViewValue(res); 
     ngModel.$render(); 
    } 

    // make sure to return the updated view value 
    return res; 
}); 

我更新了樣品小提琴表明,它的工作原理http://jsfiddle.net/dj6mX/1138/

+0

謝謝你!我越來越厭倦角度和移動餘燼和聚合物 – SuperUberDuper 2014-10-08 16:21:45