angularjs - 使用 ng-keyup 增加或减少输入的 ng-model

标签 angularjs angularjs-directive dom-events

我想使用 ng-keyup 来监视向上和向下箭头键并增加或减少输入中的值。这看起来应该很简单,但是这个 fiddle 不起作用:http://jsfiddle.net/a8tgW/3/

html

<div  ng-controller="MyCtrl">
  <input type="text" ng-model="minPotatoes" ng-keyup="onKeyup($event, minPotatoes)" />
  <input type="text" ng-model="maxPotatoes" ng-keyup="onKeyup($event, maxPotatoes)" />
</div>

js

function MyCtrl($scope) {
  $scope.onKeyup = function (evt, val) {
    if(evt.keyCode === 40) {
      val -= 1
      console.log("decrementing val", val)
    } else if (evt.keyCode === 38) {
      val += 1
      console.log("incrementing val", val)
    }
  }
  $scope.minPotatoes = 2;
  $scope.maxPotatoes = 10;
}

我试过使用 $apply,但摘要已经在进行中。我读过 this问题,但它使用了无法访问模型引用的外部监听器。

我可以直接引用范围值,而不是传入的值,但如果 key 处理程序不知道它正在影响的模型,它的耦合度就会降低。

最佳答案

您想更改作用域变量而不是局部 val 变量。

<input type="text" ng-model="potatoCount" ng-keyup="onKeyup($event, 'potatoCount')" />

function MyCtrl($scope) {
    $scope.onKeyup = function (evt, val) {
        if(evt.keyCode === 40) {
            --$scope[val];
            console.log("decrementing val");
        } else if (evt.keyCode === 38) {
            ++$scope[val];
            console.log("incrementing val");
        }
    };
    $scope.potatoCount = 42;
}

http://jsfiddle.net/ALjR5/2

关于angularjs - 使用 ng-keyup 增加或减少输入的 ng-model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22798837/

相关文章:

javascript - 从 $http.get 调用更新 Angular 作用域变量

javascript - 滚动类型 ="number"输入以更改其值 : How to stop parent's scrolling

javascript - 汉字和 onkeypress 事件

javascript - AngularJS XMLHttpRequest 无法加载 X。不存在 'Access-Control-Allow-Origin' header

angularjs - Angular js 页面和 Twitter 分享

javascript - Angular js 中的内容可编辑

javascript - 在 oi-select 中加载大数组在 angularjs 中花费太多时间

javascript - 如何将绑定(bind)表达式作为文本传递到指令隔离范围?

javascript - 在 Drupal Gmap map 上添加事件监听器时遇到问题

javascript - angular2 定义全局文件路径/命名空间