我所做的只是添加一个属性来控制您使用 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">