从指令内绑定的事件中访问$ scope

时间:2015-12-21 23:00:20

标签: angularjs angularjs-directive angularjs-scope

我试图在元素事件中访问指令的$ scope。但是,它没有发生。

当$元素模糊时,div,dyamically创建的,应该有一个名为“isok”的类,因为ng-class

  app.directive('advformInput', function($compile) {
        return {
            restrict: 'A',
            link: function($scope, $element, $attrs) {
                var div = angular.element('<div class="advform-input" ng-class="{isok:isok}">' +
                    '<div class="helper">' + $attrs.advformInput + '</div></div>');
                var e = $compile(div)($scope);
                var par = $element.parent();

                $scope.isok = 0;
                par.append(e);

                $element.on('blur', function($event){
                    var par = $(this).parents('.advform-input:first');

                    par.removeClass('isfocused');

                    if ($($event.target).val())
                        par.addClass('hasval')
                    else
                        par.removeClass('hasval')

                    $scope.isok = 1;
                })
                $element.on('focus', function($event){
                    div.addClass('isfocused')
                });

                e.append($element);
            }
        };
    });

1 个答案:

答案 0 :(得分:1)

您只需在更改$scope.$digest()的值后添加isok

简短的解释是,角度不知道jQuery事件何时触发,你必须告诉它事情发生了变化。