Angularjs/jQuery: ajax调用结束后改变表格的宽度
Angularjs/jQuery: Change table's width after ajax call finishes.
我有一个表,其默认宽度是一定的值,说父div的80%。表最初使用'ng-if'隐藏,直到某个ajax调用完成,如下所示:
HTML:<div ng-if="!loading">
<table id="table-stable">
<thead>
//columns
</thead>
<tbody>
<tr ng-repeat="data in tableData">
//rows
</tr>
</tbody>
</table>
</div>
AngularJS控制器:
$scope.loading = true;
someFactory.getData().then(function(data) {
$scope.loading = false;
$scope.tableData = data;
//now need to write code to change table's width dependant on data.
})
如控制器中所述,根据从工厂获取的数据,我需要更改表的宽度。
的事情是,表的2列不显示根据数据中获取的值,所以,如果这些列不显示,那么我需要缩小表的宽度。
目前,在ajax调用完成后编写jQuery是行不通的。上面指定的控制器代码:
$scope.loading = true;
someFactory.getData().then(function(data) {
$scope.loading = false;
$scope.tableData = data;
$('#table-stable').attr('width', '100px'); //not working.
})
我的猜测是表还没有完全渲染?我是瞎猜的。我该如何处理这个问题?
我的猜测是表还没有完全渲染?
你是对的。用ng-if
会使事情复杂化,用ng-show
或ng-hide
代替。此外,jQuery在这里也不受欢迎,它在Angular中真正有用的场景并不多。你可以做
<div ng-show="!loading">
<table id="table-stable" ng-style="lengthyTable && { width: '100px' }">
...
如果您可以更改一个变量,指示是否应该根据数据显示这些列,那么您可以使用ng-class
,并且您的元素的类将实时更新。
例如,给自己这些CSS类:
.wide-table {
width: 80%;
}
.narrow-table {
width: 100px;
}
然后在视图中,像这样:
<table id="table-stable" ng-class="{'narrow-table': columnsHidden, 'wide-table': !columnsHidden}">
给你一把小提琴。
更新:因为你使用的是ng-if
,你可能只是在一个香草类属性中使用一个表达式,就像这样。
好吧,原来我做错了jQuery。有人在评论中指出了这一点(虽然现在删除了)
之前代码:$('#table-stable').attr('width', '100px');
正确代码:
$('#table-stable').css('width', '100px');
相关文章:
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 在javascript中显示表格而不改变html
- 看/听改变谷歌驱动电子表格
- 改变表格宽度动画
- 通过改变z-index用Javascript激活其他表的表格单元格
- 可以'不要用CSS改变表格中文本的颜色
- 使用jquery或javascript改变表格单元格的高度属性值
- JS改变内部html表格单元格
- 使用JQuery .append()动态改变表格布局
- 如何动态改变HTML表格行中可点击的图像
- 使用Javascript在鼠标点击时改变表格单元格的颜色
- 使用按钮/jquery改变表格的CSS样式
- 谷歌电子表格如何检测单元格点击而不改变焦点
- 选择表格单元格,改变背景颜色
- 改变表格单元格的bgColor
- Angularjs/jQuery: ajax调用结束后改变表格的宽度
- 使用javascript根据json值改变表格单元格的背景颜色
- 每次点击表格都会改变单元格的宽度
- 改变表格单元格的位置
- 如何使用javascript改变HTML表格中列的颜色