在angularjs中设置值时如何检测输入元素的变化

吉野

在线代码:

http://jsfiddle.net/mb98y/309/

的HTML

<div ng-app="myDirective" ng-controller="x">
    <input id="angular" type="text" ng-model="data.test" my-directive>
</div>
    <button onclick="document.querySelector('#angular').value = 'testg';">click</button>

JS

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);
                alert('value change: ' + scope.data.test);
            });
        }
    };
});

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

http://jsfiddle.net/mb98y/310/

的HTML

<div ng-app="myDirective" ng-controller="x">
<input id="angular" type="text" my-directive="test">{{test}}</div>
<button onclick="document.querySelector('#angular').value =  'testg';">click</button>

JS

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 change 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(ng模型或范围对象)可以获取它。

但, document.querySelector('#angular').value = 'testg';

以这种方式更改元素值,angularjs $ watch和bind函数都无法获取值更改事件。如果您通过键盘在输入元素中输入了一些单词,它们都会起作用。

在angularjs中以这种方式设置值时,如何检测输入元素值的变化?

维托雷

首先,在这里双向数据绑定是为了避免这种情况。

 <input ng-model='ctrl.field' />

 <button ng-click='ctrl.field = "new value"'>change</button>

其次,存在ng-change与一起使用的指令,ng-model当模型中的值更改时,该指令可用于执行某些操作。

 <input ng-model='ctrl.field' ng-change='alert("changed!")' />

如果您仍想直接通过DOM更改角度之外的值,则只需触发角度监听的事件-blurkeypressed

 <button ng-click='$("#id").val(a); $("#id").trigger("blur")'>change</button>

或者

 <button ng-click='angular.element("#id").val(a); angular.element("#id").trigger("blur")'>change</button>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在angularjs中设置值时如何检测输入元素的变化

来自分类Dev

如何检测元素的变化

来自分类Dev

如何设置输入元素的值?

来自分类Dev

如何使用 JS/Jquery 检测输入的值何时动态变化

来自分类Dev

我无法以编程方式检测angularjs中的值变化

来自分类Dev

如何设置默认十进制值以在angularjs中输入

来自分类Dev

每次更改角度值时如何检测变量的变化

来自分类Dev

如何从iOS设置中检测动态字体大小的变化?

来自分类Dev

未检测到输入值变化

来自分类Dev

如何在GXT组合框中检测实际值变化

来自分类Dev

如何观察ng含量中输入元素的变化

来自分类Dev

如何检测文本输入的退格键变化?

来自分类Dev

如何监听输入中的段值 (__/__/___) 变化[type="date"]

来自分类Dev

当值被另一个事件修改时,如何检测输入文本值的变化

来自分类Dev

如何在不影响ngModel的情况下在AngularJS中设置输入的值

来自分类Dev

如何在哈希中设置输入值?

来自分类Dev

如何在AngularJS中过滤输入值

来自分类Dev

在詹金斯管道中输入值为空时如何设置字符串输入默认值

来自分类Dev

如何在AngularJS中为select元素设置初始值?

来自分类Dev

从jQuery检测PHP foreach内部的输入值变化

来自分类Dev

如何使用硒设置“值”以输入Web元素?

来自分类Dev

当输入成为焦点时如何设置表单元素的样式?

来自分类Dev

如何设置列表元素位置变化的动画

来自分类Dev

键入[Angular]时如何检测输入字段中的更改

来自分类Dev

当无效时,如何防止AngularJS将表单输入的值从其模型中解除绑定?

来自分类Dev

如何检测JavaScript中的月份变化?

来自分类Dev

如何检测类变量在组件中的变化

来自分类Dev

如何检测div或body中的变化?

来自分类Dev

如何检测角度指令中的位置变化?

Related 相关文章

  1. 1

    在angularjs中设置值时如何检测输入元素的变化

  2. 2

    如何检测元素的变化

  3. 3

    如何设置输入元素的值?

  4. 4

    如何使用 JS/Jquery 检测输入的值何时动态变化

  5. 5

    我无法以编程方式检测angularjs中的值变化

  6. 6

    如何设置默认十进制值以在angularjs中输入

  7. 7

    每次更改角度值时如何检测变量的变化

  8. 8

    如何从iOS设置中检测动态字体大小的变化?

  9. 9

    未检测到输入值变化

  10. 10

    如何在GXT组合框中检测实际值变化

  11. 11

    如何观察ng含量中输入元素的变化

  12. 12

    如何检测文本输入的退格键变化?

  13. 13

    如何监听输入中的段值 (__/__/___) 变化[type="date"]

  14. 14

    当值被另一个事件修改时,如何检测输入文本值的变化

  15. 15

    如何在不影响ngModel的情况下在AngularJS中设置输入的值

  16. 16

    如何在哈希中设置输入值?

  17. 17

    如何在AngularJS中过滤输入值

  18. 18

    在詹金斯管道中输入值为空时如何设置字符串输入默认值

  19. 19

    如何在AngularJS中为select元素设置初始值?

  20. 20

    从jQuery检测PHP foreach内部的输入值变化

  21. 21

    如何使用硒设置“值”以输入Web元素?

  22. 22

    当输入成为焦点时如何设置表单元素的样式?

  23. 23

    如何设置列表元素位置变化的动画

  24. 24

    键入[Angular]时如何检测输入字段中的更改

  25. 25

    当无效时,如何防止AngularJS将表单输入的值从其模型中解除绑定?

  26. 26

    如何检测JavaScript中的月份变化?

  27. 27

    如何检测类变量在组件中的变化

  28. 28

    如何检测div或body中的变化?

  29. 29

    如何检测角度指令中的位置变化?

热门标签

归档