Angularjs 对属性更改作出反应的指令

Angularjs 对属性更改作出反应的指令,angularjs,Angularjs,我有一个指令,带有一个属性: html: <my-directive id="test" myattr="50"></my-directive> 但我找不到一种方法来“捕捉”指令中的变化 我想要一些修改JSFIDLE的帮助,以便: 函数change在jquery调用之后调用 输入值始终等于myattr 您需要将myattr的值存储为作用域上的属性,而不是属性上的值 您的指令正确,您还需要连接控制器 var myApp=angular.module('myApp',[]

我有一个指令,带有一个属性:

html:

<my-directive id="test" myattr="50"></my-directive>
但我找不到一种方法来“捕捉”指令中的变化

我想要一些修改JSFIDLE的帮助,以便:

  • 函数
    change
    在jquery调用之后调用
  • 输入值始终等于
    myattr

  • 您需要将myattr的值存储为作用域上的属性,而不是属性上的值

    您的指令正确,您还需要连接控制器

    var myApp=angular.module('myApp',[]);
    myApp.controller('MainController',函数($scope){
    $scope.calculate=函数(){
    //你的逻辑在这里
    警报($scope.val);
    }
    });
    myApp.directive('myDirective',function(){
    变量链接=函数(范围、元素、属性){
    scope.change=函数(){
    log(“更改”+scope.myattr);
    };
    };
    返回{
    限制:'E',
    模板:“”,
    范围:{
    myattr:“=”
    },
    链接:链接
    };
    });
    
    
    我的值:{{val}}
    好啊
    您缺少的是在输入更新后触发angular侦听的事件侦听器;
    myApp.directive('myDirective', function() {
    
        var link = function(scope, element, attrs) {
    
            scope.$watch('myattr', function(value) {
                element.attr('myattr', value);
            });
    
            scope.change = function() {
                // some code
            };
        };
    
        return {
            restrict: 'E',
            template: '<input type="text" ng-change="change()" ng-model="myattr"/>',
            scope: {myattr: '='},
            link: link
        };
    });
    
    $('#test').attr('myattr', Math.random() * 100);