【问题标题】:AngularJS: Multi column Dropdown listAngularJS:多列下拉列表
【发布时间】:2020-11-27 00:34:07
【问题描述】:

我想创建一个下拉列表,它将以表格形式包含多个列。让我们说作为 Id、Result、Count 列的下拉列表。它尝试使用 ui.select 选项,但是在生产中部署时效果不佳。谁能帮我 ?如果有的话,请提出替代方案。

请找到我所指的示例代码。并且提到的链接是 http://plnkr.co/edit/a3KlK8dKH3wwiiksDSn2?p=preview

<ui-select ng-model="person.selected" theme="select2" ng-disabled="disabled" style="min-width: 300px;">
    <ui-select-match placeholder="Select a person in the list or search his name/age...">{{$select.selected.name}}</ui-select-match>
    <table style="table table-bordered" cellspacing="0" cellpadding="10" width="280px">
        <tr class="reportHeader">
<td align="left" style="width:50px">ID</td>
<td align="right" style="width:10px"></td>
<td align="left" style="width:160px">Name</td>
<td  align="right" style="width:60px">Records</td>
</tr>
</table>
    <ui-select-choices repeat="person in people | propsFilter: {name: $select.search, age: $select.search}">      
      <table cellspacing="0" cellpadding="10" width="280px">
        <tr>
          <td align="left" style="width:100px">{{person.name}}</td>
          <td align="left" style="width:10px"></td>
          <td align="left" style="width:200px">{{person.email}}</td>
          <td align="left" style="width:10px"></td>
          <td align="left" style="width:60px"><span ng-bind-html="''+person.age | highlight: $select.search"></span></td>
        </tr>
      </table>
    </ui-select-choices>
  </ui-select>

【问题讨论】:

  • 请向我们展示您的代码
  • 我已经用代码部分更新了我的问题。请指教。我想要做的是,用我的自定义字段替换姓名、电子邮件和年龄,并在对象调用中进行必要的更改。还是不行。
  • 我们可以使用自定义指令来实现这一点
  • 效果不好是什么意思?
  • 没有显示下拉菜单,而是只显示一个标签,并且对象绑定也失败了。它以标签格式显示 $select.placeholder。

标签: html angularjs


【解决方案1】:

如果有人仍在寻找解决方案:

        <style>
        .selectedOrder {
            height: 30px; 
            display:none; 
        }

    /* class applies to select element itself, not a wrapper element */
    .select-css {
        font-size: 12px;
        font-family: sans-serif;
        font-weight: 700;
        color: #444;
        line-height: 1.3;
        padding: .6em 1.4em .5em .8em;
        /* width: 100%; */
        max-width: 100%; /* useful when width is set to anything other than 100% */
        box-sizing: border-box;
        margin: 0;
        border: 1px solid #aaa;
        box-shadow: 0 1px 0 1px rgba(0,0,0,.04);
        border-radius: .5em;
        -moz-appearance: none;
        -webkit-appearance: none;
        appearance: none;
        background-color: #fff;
        /* note: bg image below uses 2 urls. The first is an svg data uri for the arrow icon, and the second is the gradient. 
            for the icon, if you want to change the color, be sure to use `%23` instead of `#`, since it's a url. You can also swap in a different svg icon or an external image reference
            
        */
        background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23007CB2%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E'),
          linear-gradient(to bottom, #ffffff 0%,#e5e5e5 100%);
        background-repeat: no-repeat, repeat;
        /* arrow icon position (1em from the right, 50% vertical) , then gradient position*/
        background-position: right .7em top 50%, 0 0;
        /* icon size, then gradient */
        background-size: .65em auto, 100%;
    }
    /* Hide arrow icon in IE browsers */
    .select-css::-ms-expand {
        display: none;
    }
    /* Hover style */
    .select-css:hover {
        border-color: #888;
    }
    /* Focus style */
    .select-css:focus {
        border-color: #aaa;
        /* It'd be nice to use -webkit-focus-ring-color here but it doesn't work on box-shadow */
        box-shadow: 0 0 1px 3px rgba(59, 153, 252, .7);
        box-shadow: 0 0 0 3px -moz-mac-focusring;
        color: #222; 
        outline: none;
    }

    /* Set options to normal weight */
    .select-css option {
        font-weight:normal;
    }

    /* Support for rtl text, explicit support for Arabic and Hebrew */
    *[dir="rtl"] .select-css, :root:lang(ar) .select-css, :root:lang(iw) .select-css {
        background-position: left .7em top 50%, 0 0;
        padding: .6em .8em .5em 1.4em;
    }

    /* Disabled styles */
    .select-css:disabled, .select-css[aria-disabled=true] {
        color: graytext;
        background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22graytext%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E'),
          linear-gradient(to bottom, #ffffff 0%,#e5e5e5 100%);
    }

    .select-css:disabled:hover, .select-css[aria-disabled=true] {
        border-color: #aaa;
    }
</style>

<div id="orderSelectContainer">
    <div id="selectedOrder" class="selectedOrder select-css" style="width: 533px; display: block;">
        <div class="currentSelectedOrder" data-value="45628" style="float: left;">
                <span style="float:left; min-width:200px;">Store 1</span>
                <span style="float:left; min-width:50px"> 55628</span>
                <span style="float:left; min-width: 150px;"> Quantity Discrepancy</span>
                <span style="float:left; min-width:100px">  </span>

        </div>
    </div>
    <div id="orderSelect" class="select-css" style="position: absolute; z-index: 1000; background-image: none; display: none;">
        <div class="orderContainer">
            <div class="order" data-value="45628" style="float: left; background: white;">
                <span style="float:left; min-width:200px;">Store 1</span>
                <span style="float:left; min-width:50px"> 55628</span>
                <span style="float:left; min-width: 150px;"> Quantity Discrepancy</span>
                <span style="float:left; min-width:100px">  </span>
            </div>
        </div>
        <div class="orderContainer">
            <div class="order" data-value="45536" style="float: left; background: lightblue;">
                <span style="float:left; min-width:200px;">Store 2</span>
                <span style="float:left; min-width:50px"> 55536</span>
                <span style="float:left; min-width: 150px;"> Quantity Discrepancy</span>
                <span style="float:left; min-width:100px"> Bad UPCs</span>
            </div>
        </div>
        <div class="orderContainer">
            <div class="order" data-value="45682" style="float: left; background: white;">
                <span style="float:left; min-width:200px;">Store 3</span><span style="float:left; min-width:50px"> 55682</span>
                <span style="float:left; min-width: 150px;"> Quantity Discrepancy</span>
                <span style="float:left; min-width:100px"> Bad UPCs</span>
            </div>
        </div>
        <div class="orderContainer">
            <div class="order" data-value="45625" style="float: left; background: white;">
                <span style="float:left; min-width:200px;">Store 4</span>
                <span style="float:left; min-width:50px"> 55625</span>
                <span style="float:left; min-width: 150px;"> Quantity Discrepancy</span>
                <span style="float:left; min-width:100px">  </span>
            </div>
        </div>
        <div class="orderContainer">
            <div class="order" data-value="45556" style="float: left; background: white;">
                <span style="float:left; min-width:200px;">Store 5</span>
                <span style="float:left; min-width:50px"> 55556</span>
                <span style="float:left; min-width: 150px;"> Quantity Discrepancy</span>
                <span style="float:left; min-width:100px"> Bad UPCs</span>
            </div>
        </div>
    </div>
    <br style="clear:both"><br>
</div>

<script>
    $(document).on(`click`, `.order`, function() {
        if ($(this).data(`value`) !== $(`#selectedOrder >.currentSelectedOrder`).data(`value`)) {
            $(`#orderContainer`).html(``);
        }
        $(`#selectedOrder`).html($(this).prop(`outerHTML`)).find(`.order`).removeClass(`order`).css(`background`, ``).addClass(`currentSelectedOrder`);
        $(`.order`).css(`background`, `white`);
        $(this).css(`background`, `lightblue`);
        $(`#selectedOrder`).show();
        $(`#orderSelect`).hide();
    });

    $(document).on(`click`, `#selectedOrder`, function() {
        //$(`#selectedOrder`).hide();
        $(`#orderSelect`).toggle();
    });

    $(document).on(`mouseenter`, `.order`, function() {
        $(`.order`).css(`background`, `white`);
        $(this).css(`background`, `lightblue`);
    });

    $(document).on(`mouseexit`, `.order`, function() {
        $(this).css(`background`, `white`);
    });
<script>

工作小提琴:https://jsfiddle.net/schmidtc63/xu8zgpc9/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-25
    相关资源
    最近更新 更多