4

次の形式で返されるデータの配列で UI-Select (select2 テーマ) を使用しています。

Array of Objects [
    0: Object {
         category: "Category name, to be used as optgroup label",
         options: [
             0: Object {
                 id: 5,
                 name: "Some name, to be used as an option under the above optgroup",
             }
             1: Object {
                 id: 6,
                 name: "Some name, to be used as an option under the above optgroup",
             }
             2: Object {
                 id: 7,
                 name: "Some name, to be used as an option under the above optgroup",
             }
         ]
    }
    1: Object {
         category: "Another category name, to be used as second optgroup label",
         options: [
             0: Object {
                 id: 44,
                 name: "Some name, to be used as an option under the above optgroup",
             }
             1: Object {
                 id: 45,
                 name: "Some name, to be used as an option under the above optgroup",
             }
             2: Object {
                 id: 47,
                 name: "Some name, to be used as an option under the above optgroup",
             }
         ]
    }
]

optgroups を作成する私の機能:

$scope.createOptGroups = function(item){
    return item.category;
};

そして、それは実際に私の optgroups を適切に作成します。

ここでの問題は以下です。optgroup を作成できるようにするには、次のレベルにいる必要があります。

<ui-select multiple ng-model="diseaseObject.chosenDiseases.states">              
    <ui-select-match placeholder="Start typing disease name or click in the box...">{{$item}}</ui-select-match>
        <ui-select-choices
            group-by="createOptGroups" 
            repeat="state in diseaseObject.allStates | filter: $select.search track by $index">

            {{state}}

        </ui-select-choices>                                
</ui-select>

このコードの結果が気になる場合は、この写真をご覧ください: http://screencast.com/t/S2VBuK1jXtA

したがって、明らかにデータは存在しますが、目的の diseaseName プロパティに絞り込む必要があります。しかし... そんなことをしたら、optgroups を失うことになります! 私はもはやcategory財産を手に入れることができるレベルではありません。state別のアイデアは、次のように絞り込むことですstate.options。しかし、値は依然としてオブジェクトの配列であり、それ自体を反復処理する必要があります。ただし、実際のオプションにさらに別のリピーターを実装するオプションがある場合 (次のようなものを達成することを意図して<span ng-repeat="name in state.options">{{name}}</span>- それはそれを行います。私は既に試しましたが、ディレクティブ (ui-select) はそれを好きではありません。

彼らはこのようなgroup-byものの公式デモを持っていますが、この特定のケースでは、関数はカスタム文字列 (文字スパン) として optgroups を作成するだけで、私の問題とはかなり異なります。

一番下の例を参照してください: http://plnkr.co/edit/juqoNOt1z1Gb349XabQ2?p=preview

4

0 に答える 0