javascript - 如何从 Controller 获取表示 ngRepeat 中元素的 HTML 节点的参数?

标签 javascript dom angularjs angularjs-ng-repeat

我有一个数组或图像 URL,我用 ng-repeat 插入到页面中作为<img>元素:

<ul>
    <li ng-repeat="image in images">
        <img src="{{image.src}}"/>
    </li>
</ul>

我想在将这些图像插入 DOM 后从我的 Controller 中获取这些图像的尺寸(宽度和高度)。有没有办法遍历我的 $scope.images数组并获取对表示其元素的 DOM 节点的引用?如果没有,最好的方法是什么?

最佳答案

您可以获得特定对象并直接在指令中更改它,因此如果您使用:ng-repeat="img in imgs",您将拥有 范围。指令中的 img:

.directive('loadable', function () {       
    return {
        link: function(scope, element, attrs) {   

            element.bind("load" , function(e){ 

               // this is it:

                scope.img.dimensions = {
                    height: element[0].naturalHeight,
                    width: element[0].naturalWidth
                }

                console.log(scope.img) // now the original object (in scope)
                                       // has dimensions property!

            });

        }
    }
});

示例:http://jsfiddle.net/XqeCr/1/

更新 并且建议将对象的操作包装在作用域的$aplly 方法调用中:

     scope.$apply( function(){
         scope.img.dimensions = {
             height: element[0].naturalHeight,
             width: element[0].naturalWidth
         }
     });

更新示例:http://jsfiddle.net/XqeCr/4/

关于javascript - 如何从 Controller 获取表示 ngRepeat 中元素的 HTML 节点的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19292879/

相关文章:

javascript - 这一行 webpack html loader 语法是什么意思?

javascript - 在子元素之前或之后渲染

javascript - 手动触发文档就绪

php - 用 PHP 用 div 包装 HTML 片段(并从 HTML 标签生成目录)

javascript - 等待所有解析的正确方法

javascript - 反混淆/解析字符串

javascript - 谷歌地图3重绘折线闪烁

xml - XML 文件中的特殊字符 - 使用 DOM API 处理

javascript - 如何在Angularjs中向当前url添加参数

javascript - 如何像google Drive一样在网页中查看office文件