如何让 AngularJS 聪明 table header 最初使用 up/down 箭头来提升用户
How to make AngularJS smart table header with the up/down arrows initially to promote users
在 jQuery 中,这是数据库 plug-in,可以很好地对 table 进行排序。在AngularJS中,我发现smart-table非常相似,也能满足我的大部分需求。
但是,我还有一个要求,那就是最初使用那些 UP/DOWN 箭头来提升用户,这些列是 sortable.
我知道如何在对列进行排序时必须使用箭头,但我不知道如何在排序前同时使用 up/down 箭头,以及如何在对列进行排序时更改为向上或向下箭头。
<thead>
<tr class="sortable">
<th >Toggle Expand/Collapse</th>
<th st-sort="projectName" st-sort-default="default" st-skip-natural="true">Project Name</th>
<th st-sort="val" st-skip-natural="true">Project Value</th>
<th st-sort="cost">Cost of Project</th>
<th st-sort="cost_benefit_ratio">Cost Benefit Ratio</th>
<th st-sort="creatorName">Creator</th>
<th st-sort="create_at">Create Time</th>
<th st-sort="LastEditorName">Last Editor</th>
<th st-sort="edit_at">Edit Time</th>
<th> Edit </th>
</tr>
<tr>
<th colspan="10"><input st-search="" class="form-control" placeholder="global search ..." type="text"/></th>
</tr>
</thead>
请看我附上的图片。
第一个是我想要达到的。第二个是我现在的情况。
通常你会用过滤器来做到这一点。您可以在 ng-repeat 中添加一个过滤器,它应该几乎可以自动对结果进行排序和过滤。
此处描述了 orderBy
我想我解决了我的问题。
在CSS中:
table thead tr.sortable th{
background-image:url("./images/up-down-arrow.png");
background-repeat: no-repeat;
background-position: center right;
}
.sortable {
cursor: pointer;
}
.st-sort-ascent{
background-image:url("./images/up-arrow.png") !important;
}
.st-sort-descent{
background-image:url("./images/down-arrow.png") !important;
}
确保添加了“!important”,这样背景图片就会被覆盖。
我遇到了类似的问题,只是我希望排序切换箭头位于 headers 的右侧。
我覆盖了 .st-sort-ascent:before CSS 规则,智能 table 适用于我自己的空规则,并应用了 :after 规则。
并不是我的所有专栏都是排序的table,所以我只将 "sort-header" class 应用到那些是排序的。
我使用了 FontAwesome 图标而不是图像。
.sort-header {
cursor: pointer;
}
.sort-header:after {
font-family: FontAwesome;
content: ' \f0dc';
color: lightgrey;
}
.st-sort-ascent:before {
content: '';
}
.st-sort-ascent:after {
font-family: FontAwesome;
content: ' \f0de';
color: black;
}
.st-sort-descent:before {
content: '';
}
.st-sort-descent:after{
font-family: FontAwesome;
content: ' \f0dd';
color: black;
}
给你
.st-table thead tr th {
cursor: pointer;
padding-right: 18px;
position: relative;
}
.st-table thead tr th:before,
.st-table thead tr th:after{
content: "";
border-width: 0 4px 4px;
border-style: solid;
border-color: #000 transparent;
visibility: visible;
right: 5px;
top: 50%;
position: absolute;
opacity: .3;
margin-top: -4px;
}
.st-table thead tr th:before{
margin-top: 2px;
border-bottom: 0;
border-left: 4px solid transparent;
border-right: 4px solid transparent;
border-top: 4px solid #000;
}
.st-table thead tr th.st-sort-ascent:before{
visibility: hidden;
}
.st-table thead tr th.st-sort-ascent:after{
visibility: visible;
filter: alpha(opacity=60);
-khtml-opacity: .6;
-moz-opacity: .6;
opacity: .6;
}
.st-table thead tr th.st-sort-descent:before{
visibility: visible;
filter: alpha(opacity=60);
-khtml-opacity: .6;
-moz-opacity: .6;
opacity: .6;
}
.st-table thead tr th.st-sort-descent:after{
visibility: hidden;
}
在 jQuery 中,这是数据库 plug-in,可以很好地对 table 进行排序。在AngularJS中,我发现smart-table非常相似,也能满足我的大部分需求。 但是,我还有一个要求,那就是最初使用那些 UP/DOWN 箭头来提升用户,这些列是 sortable.
我知道如何在对列进行排序时必须使用箭头,但我不知道如何在排序前同时使用 up/down 箭头,以及如何在对列进行排序时更改为向上或向下箭头。
<thead>
<tr class="sortable">
<th >Toggle Expand/Collapse</th>
<th st-sort="projectName" st-sort-default="default" st-skip-natural="true">Project Name</th>
<th st-sort="val" st-skip-natural="true">Project Value</th>
<th st-sort="cost">Cost of Project</th>
<th st-sort="cost_benefit_ratio">Cost Benefit Ratio</th>
<th st-sort="creatorName">Creator</th>
<th st-sort="create_at">Create Time</th>
<th st-sort="LastEditorName">Last Editor</th>
<th st-sort="edit_at">Edit Time</th>
<th> Edit </th>
</tr>
<tr>
<th colspan="10"><input st-search="" class="form-control" placeholder="global search ..." type="text"/></th>
</tr>
</thead>
请看我附上的图片。
第一个是我想要达到的。第二个是我现在的情况。
通常你会用过滤器来做到这一点。您可以在 ng-repeat 中添加一个过滤器,它应该几乎可以自动对结果进行排序和过滤。
此处描述了 orderBy
我想我解决了我的问题。
在CSS中:
table thead tr.sortable th{
background-image:url("./images/up-down-arrow.png");
background-repeat: no-repeat;
background-position: center right;
}
.sortable {
cursor: pointer;
}
.st-sort-ascent{
background-image:url("./images/up-arrow.png") !important;
}
.st-sort-descent{
background-image:url("./images/down-arrow.png") !important;
}
确保添加了“!important”,这样背景图片就会被覆盖。
我遇到了类似的问题,只是我希望排序切换箭头位于 headers 的右侧。
我覆盖了 .st-sort-ascent:before CSS 规则,智能 table 适用于我自己的空规则,并应用了 :after 规则。
并不是我的所有专栏都是排序的table,所以我只将 "sort-header" class 应用到那些是排序的。
我使用了 FontAwesome 图标而不是图像。
.sort-header {
cursor: pointer;
}
.sort-header:after {
font-family: FontAwesome;
content: ' \f0dc';
color: lightgrey;
}
.st-sort-ascent:before {
content: '';
}
.st-sort-ascent:after {
font-family: FontAwesome;
content: ' \f0de';
color: black;
}
.st-sort-descent:before {
content: '';
}
.st-sort-descent:after{
font-family: FontAwesome;
content: ' \f0dd';
color: black;
}
给你
.st-table thead tr th {
cursor: pointer;
padding-right: 18px;
position: relative;
}
.st-table thead tr th:before,
.st-table thead tr th:after{
content: "";
border-width: 0 4px 4px;
border-style: solid;
border-color: #000 transparent;
visibility: visible;
right: 5px;
top: 50%;
position: absolute;
opacity: .3;
margin-top: -4px;
}
.st-table thead tr th:before{
margin-top: 2px;
border-bottom: 0;
border-left: 4px solid transparent;
border-right: 4px solid transparent;
border-top: 4px solid #000;
}
.st-table thead tr th.st-sort-ascent:before{
visibility: hidden;
}
.st-table thead tr th.st-sort-ascent:after{
visibility: visible;
filter: alpha(opacity=60);
-khtml-opacity: .6;
-moz-opacity: .6;
opacity: .6;
}
.st-table thead tr th.st-sort-descent:before{
visibility: visible;
filter: alpha(opacity=60);
-khtml-opacity: .6;
-moz-opacity: .6;
opacity: .6;
}
.st-table thead tr th.st-sort-descent:after{
visibility: hidden;
}