私が作成したディレクティブは、関数 setFormatting を使用して、入力フィールドのテキスト値をマスクします。
scope.$watch(element, function() {
modelCtrl.$setViewValue(setFormatting(element.val(), attrs.symbol));
modelCtrl.$render();
});
element.bind('blur', function() {
modelCtrl.$setViewValue(setFormatting(element.val(), attrs.symbol));
modelCtrl.$render();
});
scope.$watch は、コンテンツが初めてロード/適用されるときにマスクを適用し、element.bind はそれ以外のときにマスクを適用します。scope.$watch は、シンボル (存在する場合) を ng-model 変数の一部として保存しています。element.bind はそうではありません。$setViewValue() と $render() が ng-model 変数を更新していないと思いました。変数はどこで更新されますか?
添付のフィドルを参照してください: http://jsfiddle.net/PJ3M4/
ありがとうございます。