javascript - 拦截值更改重写 angular.js 中的值

标签 javascript angularjs

在我的 angular.js 应用程序中,我正在渲染一个绑定(bind)到范围变量的输入字段,用户可以在其中输入数量。

我现在要做的是拦截对绑定(bind)变量的所有更改,如果输入非整数数量或字段留空,我想将范围变量设置为 1。

我设法通过 watch 做到了这一点,但我遇到了错误,因为我的数量变量也在我的 watch 功能中被修改:

$scope.$watch('quantity', function (oldValue, newValue) {
    // Some Code ...
    if (!valid) {
        $scope.quantity = 1;
    }
});

任何想法表示赞赏

最佳答案

您可以使用$timeout强制执行scope.apply。简单地说,你可以这样做

$scope.check = function () {
    // Some Code ...
    if (!valid) {
        $timeout(function () {
            $scope.quantity = 1;
        });
    }
};

DEMO

关于javascript - 拦截值更改重写 angular.js 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18448629/

相关文章:

javascript - 如何在jQuery中获取输入类型复选框和单选框的类型

javascript - 为什么不在 window 对象上定义 const 和 let 语句

javascript - 如何使用jquery从 Angular 服务获取json数据

javascript - 当我不知道属性名称时,如何从 javascript 对象获取值

javascript - 使用 ng-repeat 循环遍历一系列数组

javascript - 使用 Angular 循环遍历数组中的数组

javascript - 等效于 javascript 或 nodejs 中 Python 的 help()

javascript - 在 dc.js 中更改图例值

javascript - jQuery - 可拖动/停留在视口(viewport)中

javascript - 是否可以获取一个巨大的字符串并将其作为 JavaScript 通过 URL 路径加载?