javascript - Angularjs - 如何将函数分配给指令中的嵌套元素

标签 javascript angularjs

我是 angularjs 新手,我无法解决这个问题。

指令

app.directive('rating', [function () {
return {
    restrict: 'E',
    scope: {
        maxStars: '=',

    },


    link: function (scope, iElement, iAttrs) {
            scope.stars = [];
            for(var i=0;i<scope.maxStars;i++) {
                scope.stars.push(i);
            }

            iElement.bind('mouseenter', function(event) {

                scope.$apply(function(){
                    angular.forEach(iElement.children(),function(div){
                        angular.forEach(div.children,function(span){
                          span.addClass('rating-star-enabled'); //error addClass is not a function
                        });
                    });
                });
            });

    },
    templateUrl:'rating/rating.html'
};
}]);

指令模板

<div class="review-star">

   <span class="glyphicon glyphicon-record" ng-repeat="star in stars"></span>

</div>

指令

<rating max-stars="5"></rating>

我收到错误 addClass 不起作用。它不仅仅适用于 addClass,如果我尝试任何其他函数,它会显示相同的错误。如果我将其登录到控制台,我可以看到它打印所有标签。所以它可以正确访问元素。我做错了什么?

最佳答案

当您对 iElement.children() 使用 angular.forEach() 时,您正在迭代原始 DOM 元素的数组(这就是为什么您需要使用div.children 而不是内部 angular.forEach() 中的 div.children())。您需要将 span (也是原始 DOM 元素)转换为 jqLit​​e 对象,然后才能调用 addClass()...

scope.$apply(function(){
    angular.forEach(iElement.children(),function(div){
        angular.forEach(div.children,function(span){
          angular.element(span).addClass('rating-star-enabled');
        });
    });
});

关于javascript - Angularjs - 如何将函数分配给指令中的嵌套元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24837084/

相关文章:

javascript - 带有 jsf 组件的不显眼的 javascript ...怎么样?

angularjs - ng-disabled 不适用于列数据字段中的值

javascript - Tizen 登录 Facebook

javascript - 如何使用javascript获取一个文本框的运行时值并将其显示到其他文本框

javascript - 使用 Angular JS 添加图像

javascript - $rootScope 作为事件聚合器

angularjs - 在 AngularUI 中使用 SASS/LESS

java - 让 RestAssured 测试与 Spring Security CSRF for AngularJS 一起使用

javascript - 如何使用 Ajax .serialize() 数据将表单发布到 PHP?

javascript - 功能失调的条件评估页面宽度