【发布时间】:2017-08-07 03:09:21
【问题描述】:
我正在尝试实现 INR(印度卢比)到 USD(美元)货币转换器。视图应始终以 INR 显示值。但是该模型应该以美元保持价值。
为此,我实现了一个用于输入的文本框。输入将始终以 INR 给出。
我正在使用 ngModel 的 $viewValue 和 $modelValue 属性来处理我的问题。
我有一种情况,即在某些事件的后台计算货币。例如。如果货币在模型中存储为 1 美元。它在应用程序中的某些事件上更改为 2 美元。在这种情况下,我的视图以美元显示价值(在本例中为 2 美元),并且只有当我专注于我的文本框时,价值才会以 INR 显示(如 126 INR)。
$viewValue 未显示在更改事件的文本框中。
请帮帮我。
.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);
});
}
};
})
【问题讨论】:
标签: javascript angularjs angular-ngmodel angular-directive