Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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
Jquery 如何以AngularJS 1.x的方式将剑道UI网格的高度扩展到100%?_Jquery_Angularjs_Kendo Ui_Height_Kendo Grid - Fatal编程技术网

Jquery 如何以AngularJS 1.x的方式将剑道UI网格的高度扩展到100%?

Jquery 如何以AngularJS 1.x的方式将剑道UI网格的高度扩展到100%?,jquery,angularjs,kendo-ui,height,kendo-grid,Jquery,Angularjs,Kendo Ui,Height,Kendo Grid,我最近遇到了一个问题,我需要一个剑道UI网格小部件,它的高度设置为周围环境的100%。我尝试在我的网格上应用一些基本的CSS,但没有成功: html,正文{ 身高:100%; } .垂直扩展{ 身高:100%; 最低高度:100% } 正如您在本文中看到的,只要不调整窗口大小,就可以正常工作: 我找到了一个解决方案,如何使用jQuery来实现这一点,但是这个问题不包括使用angular时要采取的方法 我可以将代码放入控制器中,但我不确定这是否是操作DOM的正确位置。如何以优雅的AngularJS

我最近遇到了一个问题,我需要一个剑道UI网格小部件,它的高度设置为周围环境的100%。我尝试在我的网格上应用一些基本的CSS,但没有成功:

html,正文{ 身高:100%; } .垂直扩展{ 身高:100%; 最低高度:100% } 正如您在本文中看到的,只要不调整窗口大小,就可以正常工作:

我找到了一个解决方案,如何使用jQuery来实现这一点,但是这个问题不包括使用angular时要采取的方法


我可以将代码放入控制器中,但我不确定这是否是操作DOM的正确位置。如何以优雅的AngularJS方式实现所需的行为?

AngularJS 1.x中隐藏操作DOM的代码的正确位置是。引用AngularJS文档:

在高层,指令是DOM元素上的标记,如属性、元素名称、注释或CSS类,它们告诉AngularJS的HTML编译器$compile将指定的行为附加到该DOM元素,甚至转换DOM元素及其子元素

因此,您可以创建自己的指令,将所需的调整大小行为附加到网格:

//定义指令并注入angularJS引用 //指向$window对象。 应用程序指令'expandKGrid',['$window',函数$window{ //定义指令,但将其使用限制为 var指令={ link:link,//附加行为的函数 restrict:'A',//restrict指令仅用作属性 require:'kendoGrid',//确保在元素上设置了该指令 }; 返回指令; 函数链接范围、元素、属性{ var gridElement=$element; //将eventHandler附加到 //窗口来相应地调整网格数据区域的大小 $$window.resizefunction{ //获取包装数据的元素 var-dataElement=gridElement.find'.k-grid-content'; //获取所有其他元素的页眉、页脚等。。。 var nonDataElements=gridElement.children.not'.k-grid-content'; //获取整个网格的高度,无任何边界或边距 var currentGridHeight=gridElement.innerHeight; //计算并设置数据区域的高度,该高度 //整个网格的高度是否小于所取的高度 //所有非数据内容。 var nonDataElementsHeight=0; 非DataElements.eachfunction{ nonDataElementsHeight+=$this.outerHeight; }; dataElement.heightcurrentGridHeight-非DataElementSheight; }; } }]; 最后,将此指令应用于网格:

所有这些-您已经提供的CSS与AngularJS指令的组合确保网格始终具有其周围容器的100%高度,即使窗口被调整大小:


您可以在中看到这一点。

AngularJS 1.x中隐藏操作DOM的代码的正确位置是。引用AngularJS文档:

在高层,指令是DOM元素上的标记,如属性、元素名称、注释或CSS类,它们告诉AngularJS的HTML编译器$compile将指定的行为附加到该DOM元素,甚至转换DOM元素及其子元素

因此,您可以创建自己的指令,将所需的调整大小行为附加到网格:

//定义指令并注入angularJS引用 //指向$window对象。 应用程序指令'expandKGrid',['$window',函数$window{ //定义指令,但将其使用限制为 var指令={ link:link,//附加行为的函数 restrict:'A',//restrict指令仅用作属性 require:'kendoGrid',//确保在元素上设置了该指令 }; 返回指令; 函数链接范围、元素、属性{ var gridElement=$element; //将eventHandler附加到 //窗口来相应地调整网格数据区域的大小 $$window.resizefunction{ //获取包装数据的元素 var-dataElement=gridElement.find'.k-grid-content'; //获取所有其他元素的页眉、页脚等。。。 var nonDataElements=gridElement.children.not'.k-grid-content'; //获取整个网格的高度,无任何边界或边距 var currentGridHeight=gridElement.innerHeight; //计算并设置数据区域的高度,该高度 //整个网格的高度是否小于所取的高度 //所有非数据内容。 var nonDataElementsHeight=0; 非dataelements.eachfunctio n{ nonDataElementsHeight+=$this.outerHeight; }; dataElement.heightcurrentGridHeight-非DataElementSheight; }; } }]; 最后,将此指令应用于网格:

所有这些-您已经提供的CSS与AngularJS指令的组合确保网格始终具有其周围容器的100%高度,即使窗口被调整大小:


你可以在中看到这一点。

我知道这篇文章很老,但是;考虑使用内置的大小调整函数,也确保在指令被销毁时清理事件。我知道这个帖子是旧的,但是;考虑使用内置的调整大小函数,也确保在指令被销毁时清理事件。