Sim*_*lGy 3 javascript-events angularjs angularjs-directive
我想ng-keyup用来观察向上和向下箭头键并增加或减少输入中的值.这似乎应该是直截了当的,但这个小提琴不起作用: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>
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
我尝试过使用$apply,但摘要已在进行中.我已经阅读了这个问题,但是它使用了一个无法访问模型引用的外部监听器.
我可以直接引用范围值,而不是传入的值,但如果密钥处理程序不知道它正在影响的模型,它会更少耦合.
您希望更改范围变量而不是本地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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4105 次 |
| 最近记录: |