AngularJS-属性指令输入值更改

问题描述

AngularJS文档中有一个很好的例子。

这是非常好的评论,应该让您指出正确的方向。

一个简单的示例,也许更多,因此您想要的是下面的内容:

jsfiddle

<div ng-app="myDirective" ng-controller="x">
    <input type="text" ng-model="test" my-directive>
</div>

angular.module('myDirective', [])
    .directive('myDirective', function () {
    return {
        restrict: 'A',
        link: function (scope, element, attrs) {
            scope.$watch(attrs.ngModel, function (v) {
                console.log('value changed, new value is: ' + v);
            });
        }
    };
});

function x($scope) {
    $scope.test = 'value here';
}

同样的事情,不需要ngModel jsfiddle

angular.module('myDirective', [])
    .directive('myDirective', function () {
    return {
        restrict: 'A',
        scope: {
            myDirective: '='
        },
        link: function (scope, element, attrs) {
            // set the initial value of the textbox
            element.val(scope.myDirective);
            element.data('old-value', scope.myDirective);

            // detect outside changes and update our input
            scope.$watch('myDirective', function (val) {
                element.val(scope.myDirective);
            });

            // on blur, update the value in scope
            element.bind('propertychange keyup paste', function (blurEvent) {
                if (element.data('old-value') != element.val()) {
                    console.log('value changed, new value is: ' + element.val());
                    scope.$apply(function () {
                        scope.myDirective = element.val();
                        element.data('old-value', element.val());
                    });
                }
            });
        }
    };
});

function x($scope) {
    $scope.test = 'value here';
}

解决方法

我有一个AngularJS属性指令,并且只要其父输入的值发生更改,我都想采取措施。现在,我正在使用jQuery:

angular.module("myDirective",[])
.directive("myDirective",function()
{
    return {
        restrict: "A",scope:
        {
            myDirective: "=myDirective"
        },link: function(scope,element,attrs)
        {
            element.keypress(function()
            {
                // do stuff
            });
        }
    };
});

没有jQuery,有没有办法做到这一点?我发现keyPress事件并没有完全实现我想要的功能,虽然我确定自己会提出解决方案,但是当我在Angular项目中使用jQuery时,我会有些紧张。

那么,Angular如何做到这一点呢?

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...