javascript - 如何在不影响 AngularJS 中的原始变量的情况下操作 View 值

标签 javascript angularjs

我想在不影响底层模型变量的情况下更改 angularjs 中 ng-model 的 View 值。我在 Controller 中定义了一个范围变量 markPercent。

$scope.markPercent = 0.43;

我正在尝试使用 ng-model 从我的 View 中访问它。

<input type="text" ng-model="markPercent">

此输入在 View html 中显示 0.43。我想要的是 View html 中的 43,而不影响 $scope.markPercent 的值。此外,如果用户更改输入字段中的值,则应以相同方式修改范围变量(例如:如果用户输入 65,则 $scope.markPercent 应为 0.65)。事实上,我不想每次都在 watch 内将它乘以和除以 100(我现在就是这样做的)。我们如何以 Angular 方式进行?

最佳答案

ngModel.$parsers/ngModel.$formatters 管道 ( ref ) 就是这种情况。您将需要一个要求ngModel 并将其自己的代码放入这两个管道的指令。例如:

app.directive("percent", function() {
    /** Convert a string view value to percent float from 0.0 to 1.0. */
    function parser(value) {
        // implement this
    }

    /** Convert a float from 0.0 to 1.0 to percent. */
    function formatter(value) {
        // implement this
    }

    return {
        restrict: "A",
        require: "ngModel",
        link: function(scope, elem, attrs, ngModel) {
            ngModel.$parsers.push(parser);
            ngModel.$formatters.push(formatter);
        }
    };
});

简单解析器/格式化器的工作示例:http://jsfiddle.net/748j30ha/

关于javascript - 如何在不影响 AngularJS 中的原始变量的情况下操作 View 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26484832/

相关文章:

angularjs - 为什么 Angular 将 undefined 设置为空 ng-model 字段

angularjs - 在 IE 上运行时,'Promise' 是未定义的错误

javascript - 正则表达式,/(?!^)/g 是什么意思?

javascript - 刷新浏览器时 sessionStorage 消失了 - Javascript

javascript - 如何全局安装节点模块?

javascript - angularJS 服务模型避免重复

angularjs - 在ionic中获取文件的base64字符串

javascript - 我的下拉列表未动态选择

javascript - 检查对象中的数组值,如果有键,则推送一个新数组

javascript - Angular Material 使用 $http 调用自动完成