私がしたことは、属性を追加して、viewValue と Value のどちらを使用するかを制御することでした。
スクリプトの変更はまったく問題ありません。約数5
行のコードが必要です。
方法は次のとおりです。
- 上のコードと下のコードの小さなビューを提供することにより、コード追加のコンテキストをできるだけよく示すようにします。
最初に変数を先頭に追加します
return function uiMaskLinkingFunction(scope, iElement, iAttrs, controller){
var maskProcessed = false, eventsBound = false,
maskCaretMap, maskPatterns, maskPlaceholder, maskComponents,
//... Ton of varaibles...
var useViewValue; // <----- ADD THIS
コードの後半に、Formatter 関数と Parser 関数があります。
function formatter(fromModelValue){
/*formatter code*/
}
function parser(fromViewValue){
// parser code...
if (value === '' && controller.$error.required !== undefined) {
controller.$setValidity('required', false);
}
// ADD useViewValue code START
if (useViewValue)
value = value.length ? maskValue(value) : '';
// ADD useViewValue code END
return isValid ? value : undefined;
}
最後に、オブザーバーを属性値に追加する必要があります。
iAttrs.$observe('uiMask', initialize);
// ADD useViewValue code START
iAttrs.$observe('uiMaskUseViewvalue', function (useVVal) {
useViewValue = useVVal == 'true';
});
// ADD useViewValue code END
iAttrs.$observe('placeholder', initPlaceholder);
HTMLにも実装する
<input type="text" ui-mask="19/39/2999" ui-mask-use-viewvalue="true" ng-model="inicio">