【发布时间】:2014-03-15 07:03:17
【问题描述】:
我的指令:
(function () {
'use strict';
wikiApp.directive('jzInput', ['$sce', function ($sce) {
var html = [
'<input type="text" ng-change="validate()" />'
];
var addSeparator = function (input, sep) {
return (input + '').replace(/(\d)(?=(\d{3})+$)/g, '$1' + sep);
};
var digitsOnly = function (input) {
return (input.toString()).replace(/[^\d]/g, "");
};
var parseInteger = function(input) {
return addSeparator(digitsOnly(input), ',');
};
return {
restrict: 'E',
template: html.join(''),
replace: true,
require: 'ngModel',
scope: {
type: '@'
},
link: function($scope, $element, $attr, ngModel) {
ngModel.$parsers.push(function(value){
var input = value;
var output = input;
// Integer
output = parseInteger(input);
console.log(output);
return output;
});
}
};
}]);
})();
我的 HTML:
<jz-input type="text" ng-model="test">
<input type="text" ng-model="test">
input 具有来自我的 validate 函数的更新值,而我的 jzInput 指令没有。如何从我的指令中手动更新 ngModel 的值并使其正确反映?
例子:
Plunker。在顶部输入中输入数字和字母。请注意,字母会出现,而格式良好的数字则不会。在下面的输入中,使用相同的模型变量,显示了正确的预期值。如何让我的jz-input 显示模型的正确预期值?
【问题讨论】:
标签: angularjs