如何在使用CSS网格时优化大量ng重复

所以我想用css网格制作表,其中有5列,行数未知。单击第一个列元素时,我还会弹出一个元素。该弹出元素的覆盖范围是从第2列到第5列。其原因是我想保持从所有列可见到仅第一列的滚动位置。

我的问题是,随着数据量的增加,所有这些ng-repeats 都会变得缓慢。是否有一种方法可以统一所有彼此不在范围内的ng-repeat,而又不会失去列的这种分隔?

使用ng-repeat-start / end进行操作需要我将对象的数据元素包装到父元素中,但是这样会留给我自动生成的行和单元格,并且例如,我无法控制第一个COLUMN使其自身可滚动或设置特定高度。

(这是无法控制的)

<h1>Call List</h1>
<select>
    <option ng-repeat="list in vm.list">{{list.name}}</option>
</select>
<div class="call-list-grid" ng-init="vm.selected=false;">
    <div ng-click="vm.selected = !vm.selected" id="consumers" ng-repeat-start="list in vm.listdata">
        {{list.name}}</div>
    <div ng-if="!vm.selected" ng-click="vm.selected = vm.selected" id="status">{{list.status}}</div>
    <div ng-if="!vm.selected" ng-click="vm.selected = vm.selected" id="timezone">{{list.timezone}}</div>
    <div ng-if="!vm.selected" ng-click="vm.selected = vm.selected" id="time">{{list.time}}</div>
    <div ng-if="!vm.selected" ng-click="vm.selected = vm.selected" id="guide" ng-repeat-end>{{list.guide}}</div>

    <div ng-if="vm.selected" id="selected-consumer"></div>
</div>

这是我目前拥有的代码,我正在尝试优化

<div class="container">
    <h1>Title header</h1>
    <select>
        <option ng-repeat="data in vm.data">{{list.name}}</option>
    </select>
    <div class="list-grid" id="grid" ng-class="{'selected' : vm.selected}"
         ng-init="vm.selected=false;">
        <div id="user" ng-class="{'user-selected' : vm.selected}">
            <div ng-click="vm.selectUser()" ng-repeat="list in vm.listdata">
               {{list.name}}
            </div>
        </div>
        <div id="status">
            <div ng-if="!vm.selected" ng-class="{'user-selected' : vm.selected}"
                 ng-repeat="list in vm.listdata">
                {{list.status}}</div>
        </div>
        <div id="timezone">
            <div ng-if="!vm.selected" ng-class="{'user-selected' : vm.selected}"
                 ng-repeat="list in vm.listdata">
                {{list.timezone}}</div>
        </div>
        <div id="time">
            <div ng-if="!vm.selected" ng-class="{'user-selected' : vm.selected}"
                 ng-repeat="list in vm.listdata">
                {{list.time}}
            </div>
        </div>
        <div id="person">
            <div ng-if="!vm.selected" ng-class="{'user-selected' : vm.selected}"
                 ng-repeat="list in vm.listdata">
                {{list.person}}
            </div>
        </div>
        <div ng-if="vm.selected" id="selected">

        </div>
    </div>
</div>
.list-grid {
    display: grid;
    grid-template-columns: auto auto auto auto auto;
    row-gap: 2px;
    height: 77vh;
    overflow-x: hidden;

    &.consumer-selected {
        overflow: hidden;
    }
}

#user {
    grid-column-start: 1;
    grid-column-end: 2;

    // height: 100vh;
    // overflow: hidden;
    &.consumer-selected {
        overflow-y: auto;
        overflow-x: hidden;
        height: 77vh;
    }
}

#status {
    grid-column-start: 2;
    grid-column-end: 3;

    &.consumer-selected {
        display: none;
    }
}

#timzone {
    grid-column-start: 3;
    grid-column-end: 4;

    &.consumer-selected {
        display: none;
    }
}

#time {
    grid-column-start: 4;
    grid-column-end: 5;

    &.consumer-selected {
        display: none;
    }
}

#person{
    grid-column-start: 5;
    grid-column-end: 6;

    &.consumer-selected {
        display: none;
    }
}

#selected{
    background-color: rgb(177,218,177);
    grid-column-start: 2;
    grid-column-end: 6;
    grid-row: 1 / 50;
    height: 77vh;
}
dayue0618 回答:如何在使用CSS网格时优化大量ng重复

您好,您可以使用filter limitTo,所以也许我不会选择,但可以为您效用,所以您可以使用类似的东西。

class IndexPage extends React.Component {
  constructor(props) {
    super(props);

    this.state = {modalsRef: null};
  }

  render() {
    return (
      <Layout>
        <SEO/>
        <Header modalsRef={this.state.modalsRef}/>
        <Story/>
        <Products/>
        <Clients/>
        <Reviews/>
        <Partners/>
        <Footer/>
        <Modals ref={r => !this.state.modalsRef && this.setState({modalsRef:r})} />
      </Layout>
    )
  }
}

您也可以在滚动中使用它。

本文链接:https://www.f2er.com/2898439.html

大家都在问