我有一個指令,將電話號碼格式爲(xxx)xxx-xxxx。格式化按預期工作,但輸入字段上的模型不會更新,除非輸入一個通過標準10的字符。所以在用戶輸入10位數字後,數字會自動在輸入字段內格式化。但是在ng-model上設置的範圍變量不會保存格式,除非輸入一個附加字符。指令不更新範圍變量
這裏的指令:
(function (app) {
'use strict';
app.directive('formatPhone', [
function() {
return {
require: 'ngModel',
restrict: 'A',
link: function(scope, elem) {
elem.on('keyup', function() {
var origVal = elem.val().replace(/[^\d]/g, '');
if(origVal.length === 10) {
var str = origVal.replace(/(\d{3})(\d{3})(\d{4})/, '($1) $2-$3');
var phone = str.slice(0, -1) + str.slice(-1);
jQuery('#phonenumber').val(phone);
}
});
}
};
}
]);
}(window.app));
這裏是輸入字段,使用該指令作爲一個屬性:
<input type="text" placeholder="Phone" name="phone" id="phonenumber" class="user-search-input create-short form-control" ng-model="userCtrl.userPost.user.phoneNumber" required format-phone>
我試着加入$watch
它,也沒有運氣。
使用內部指令ID ..天哪....這是一場angularjs的精神。 – harishr 2014-08-27 18:57:22
非常抱歉傷害你的感受。 – reknirt 2014-08-27 19:01:17
請使用來自角度ui社區的ui-mask指令 – harishr 2014-08-27 19:01:58