Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript angularjs在指令中查找div的属性_Javascript_Html_Angularjs - Fatal编程技术网

Javascript angularjs在指令中查找div的属性

Javascript angularjs在指令中查找div的属性,javascript,html,angularjs,Javascript,Html,Angularjs,新的角度,新的堆栈溢出。几天来一直在努力解决这个问题。我的问题是: 我想把一组盒子放在中间 有没有办法访问div的属性(使用id或类名)并在指令中操作它们 在我的html中,我使用ng repeat创建div,div是显示的框。我有一个指令,目前我正试图使用它来查找和操作html中div/指令的属性,但是我似乎无法做到这一点 我在谷歌上搜索了很多,发现了类似的问题,但在我的代码中似乎什么都没有 这是一把小提琴: 感谢您提供的任何帮助。离您很近了!我能够在我的一把测试小提琴上运行指令。看一看 $

新的角度,新的堆栈溢出。几天来一直在努力解决这个问题。我的问题是:

我想把一组盒子放在中间

有没有办法访问div的属性(使用id或类名)并在指令中操作它们

在我的html中,我使用ng repeat创建div,div是显示的框。我有一个指令,目前我正试图使用它来查找和操作html中div/指令的属性,但是我似乎无法做到这一点

我在谷歌上搜索了很多,发现了类似的问题,但在我的代码中似乎什么都没有

这是一把小提琴:


感谢您提供的任何帮助。

离您很近了!我能够在我的一把测试小提琴上运行指令。看一看

$(element).css('border', '1px solid red');
$(element).css('text-align', 'center');
看看这把小提琴,我有你指令的样本


原因是ng repeat更改了DOM,子元素不可用 在指令编译期间。 因此,子元素上需要一块$watch

这将通知指令已添加子元素,然后对其执行操作

$watch必须跳过节点类型,即“comment:(type 8)”

这是工作小提琴:

链接中的部分:

 link: function ($scope, element, attrs, controller) {
                    $scope.$watch(element.children(),function(){
                    var children = element.children();
                    for(var i=0;i<children.length;i++){
                        if(children[i].nodeType !== 8){
                            angular.element(children[i]).css('background', 'orange');
                        }
                    }
                });
            }
链接:函数($scope、element、attrs、controller){
$scope.$watch(element.children(),function()){
var children=element.children();

对于(var i=0;iDid您是否查看了transclude?我认为在自定义标记的transclude中使用ng repeat会更好。有没有办法不硬编码html中的高度?我正在尝试查找宽度(或任何其他属性)我猜指令中的元素是动态的。假设创建了3个框,它们出现在一行中,但它们是左对齐的。我希望指令找到它们的宽度,然后做定心等,然后将其应用到元素。希望这是清楚的,谢谢你的努力。嘿,谢谢你的努力,我在我的代码中尝试了这一点它似乎不起作用,而且我不理解“不等于8”部分。这也没有得到新元素的属性。但是谢谢你的努力。只需提供你的用例。angularjs在执行ng repeat时添加了节点类型8,因此应该跳过它,以获取更多信息:它有调用di的htmlrective和指令。指令位于controller.js文件中html位于home.html文件中,该文件通过app.js加载到index.html文件中。一切正常,但我不知道如何在指令中检索调用指令的div的属性(或html文件中的指令,无论您如何称呼它).我会再试试你的解决方案。
 link: function ($scope, element, attrs, controller) {
                    $scope.$watch(element.children(),function(){
                    var children = element.children();
                    for(var i=0;i<children.length;i++){
                        if(children[i].nodeType !== 8){
                            angular.element(children[i]).css('background', 'orange');
                        }
                    }
                });
            }