我正在查看AngularJS上由用户更改的文本输入。
但是,似乎当我从.js打印到控制台时,ng-model关闭了一个字符,这是因为更新一次按下一次键似乎存在滞后。
例如: 如果用户键入“ hello”,我将看到“ hell”,直到触发另一个按键,这将把我看到的内容更新为“ hello”,但用户输入可能是“ helloW”
如果这有道理...对不起。
基本上,有没有一种方法可以强制从控制器更新ng-model,以便每次按键时都能看到用户输入?
抱歉,我无法发布代码。
答案 0 :(得分:1)
将 ng-change
与 ng-model
var myApp = angular.module('app',[]);
myApp.controller('Main', function ($scope) {
$scope.print = function(){
console.log($scope.myname);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app="app" ng-controller="Main">
<input type="text" name="inputbox" ng-change="print()" ng-model="myname">
</body>
答案 1 :(得分:1)
尝试将“ ng-keyup ”与“ ng-model ”一起使用,而不是 ng-keydown :)
此处是文档: https://docs.angularjs.org/api/ng/directive/ngKeyup
var app = angular.module('app',[]);
app.controller('MyController', function ($scope) {
$scope.onKeyUpPrint = function(){
// You can name the function as you want
// scope will be triggered exactly on key Up
console.log($scope.inputModel);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app="app" ng-controller="MyController">
<h1>Use ng-keyup<h1>
<input type="text" name="inputbox" ng-keyup="onKeyUpPrint()" ng-model="inputModel">
</body>