INR(インドルピー)からUSD(米ドル)通貨への変換を実装しようとしています。ビューは常にINRの値を表示する必要があります。しかし、モデルはUSDで値を保持する必要があります。
そのために、入力用のテキストボックスを実装しました。入力は常にINRで与えられます。
そして、私は問題を処理するためにngModelの$ viewValueと$ modelValue属性を使用しています。
私は、あるイベントで通貨がバックグラウンドで計算される状況があります。例えば。通貨がモデルに1ドルとして保存されている場合。アプリケーションのいくつかのイベントで2ドルに変更されます。その場合、私のビューはUSDの値(この例では$ 2)を表示し、テキストボックスに焦点を当てた場合にのみ、値はINR(126 INR)で表示されます。
$ viewValueは変更イベントのテキストボックスに表示されていません。
私を助けてください。
あなたは以下のようにscope.$watch
を使用してモデル値の変化を監視する必要があり
.directive('usdInrInput', function($filter, $timeout) {
return {
require: 'ngModel',
link: function(scope, element, attrs, modelCtrl) {
function conversionFunction() {
modelCtrl.$viewValue = modelCtrl.$modelValue * 63;
modelCtrl.$render();
}
element.bind("focus", function(e) {
$timeout(function() {
conversionFunction();
}, 0);
});
element.bind("change", function(e) {
$timeout(function() {
conversionFunction();
}, 0);
});
modelCtrl.$parsers.push(function(inputValue) {
var changedOutput = parseInt(inputValue)/63;
modelCtrl.$setViewValue(parseInt(inputValue));
modelCtrl.$render();
return parseInt(changedOutput);
});
}
};
})