一尘不染

输入空格后如何触发ng-change?

angularjs

我有一个在更改textarea的值时调用的函数。它很好用,除非按下空格键,然后什么也没叫。有没有办法激活它?从技术上讲,内容在变化,我希望无论如何都要调用该函数。

我在代码上摆弄小提琴。您可以看到$scope.log按下空格键时,数组不会推送新的元素(也请按Enter键),但是其他非空白键都可以。

小提琴示例:http :
//jsfiddle.net/UJWLN/4/


阅读 308

收藏
2020-07-04

共1个答案

一尘不染

您可以在输入中使用指令ng-trim并将其设置为false,如下所示:

<textarea ng-change="changeFunction()" ng-model="myModel" ng-trim="false"></textarea>

但这并不适用于所有情况。如果要在每个按键上执行一些操作,请尝试使用自定义指令。我为你写了一个:

http://jsfiddle.net/UJWLN/6/

myApp.directive('ngKeystroke', function(){
    return {
        restrict: 'A',
        link: function(scope, elem, attrs){
            elem.bind("keyup", function(){
                scope.log.push('called');
                scope.$digest(); 
            });
        }
    };
});
2020-07-04