AngularJS Smart-Table seltsames Verhalten mit verschachtelten Objekten und st-search

Ich versuche, das Smart Table-Modul in meine AngularJS-App zu implementieren. Ich bevorzuge dies einigen anderen vor allem, weil die anderen anscheinend viel Kesselcode in meinem Controller erfordern und ich meine Controller so trocken wie möglich halten möchte. Aber ich bin offen für andere Module, die dasselbe ohne Boilerplate erreichen können.

Es funktioniert hervorragend, wenn es sich um ein direktes Array von Objekten handelt. Wenn jedoch einige dieser Objekte verschachtelte Objekte aufweisen, tritt beim Filtern und Sortieren ein seltsames Verhalten auf.

Dies wird einige Erklärungen brauchen, also nimm mich mit.

Zunächst meine Reihe verschachtelter Objekte (hier zur besseren Lesbarkeit gekürzt):

$scope.products = [
    {
        'display': 'Live',
        'name': 'LC1D09',
        'category': 'Motor Control',
        'subcategory': 'Contactor',
        'manufacturer': 'Telemecanique',
        'specs': {
            'phase': 3,
            'poles': 3
        },
        'new': {
            'price': 158.95
        },
        'refurbished': {
            'price': 145
        },
        'onlineStores': {
            'amazon': true,
            'ebay': false
        },
        'isCool': true
    },
    {
        'display': 'Pending',
        'name': 'FA32020',
        'category': 'Circuit Breaker',
        'subcategory': 'Molded Case',
        'manufacturer': 'Square D',
        'specs': {
            'phase': 1,
            'poles': 2
        },
        'new': {
            'price': 217.79
        },
        'refurbished': {
            'price': 192.82
        },
        'onlineStores': {
            'amazon': true,
            'ebay': true
        },
        'isCool': false
    }
];
$scope.displayedProducts = $scope.products;

Hier ist mein HTML:

<table st-table="displayedProducts" st-safe-src="products" class="table table-striped table-bordered table-hover">
    <thead>
        <tr>
            <th st-sort="name">Name</th>
            <th st-sort="category">Category</th>
            <th>Subcategory</th>
            <th>Manufacturer</th>
            <th>New Price</th>
            <th>Refurb. Price</th>
            <th>Display</th>
            <th>Specs</th>
            <th>Cool</th>
        </tr>
        <tr>
            <th><input st-search="'name'" placeholder="" class="input-sm form-control" type="search"/></th>
            <th><input st-search="'category'" placeholder="" class="input-sm form-control" type="search"/></th>
            <th><input st-search="'subcategory'" placeholder="" class="input-sm form-control" type="search"/></th>
            <th><input st-search="'manufacturer'" placeholder="" class="input-sm form-control" type="search"/></th>
            <th><input st-search="new.price" placeholder="" class="input-sm form-control" type="search"/></th>
            <th><input st-search="refurbished.price" placeholder="" class="input-sm form-control" type="search"/></th>
            <th><input st-search="'display'" placeholder="" class="input-sm form-control" type="search"/></th>
            <th><input st-search="'specs'" placeholder="" class="input-sm form-control" type="search"/></th>
            <th>
                <select st-search="onlineStores.ebay" class="form-control">
                    <option value=""></option>
                    <option value="true">Yes</option>
                    <option value="false">No</option>
                </select>
            </th>
        </tr>
    </thead>
    <tbody>
        <tr ng-repeat="product in displayedProducts">
            <td>{{product.name}}</td>
            <td>{{product.category}}</td>
            <td>{{product.subcategory}}</td>
            <td>{{product.manufacturer}}</td>
            <td>${{product.new.price | number : 0}}</td>
            <td>${{product.refurbished.price | number : 0}}</td>
            <td>{{product.display}}</td>
            <td>{{product.specs}}</td>
            <td>{{product.onlineStores.ebay}}</td>
        </tr>
    </tbody>
</table>

Sodies funktioniert gut, wenn mein Array keine verschachtelten Objekte hat. Aber mit den verschachtelten Objekten (zBst-search="new.price" Ich erhalte die folgenden Probleme (siehe Screenshot):

Manchmal, wenn ich Text in ein Suchfeld "Verschachteltes Objekt" eingebe, erben alle anderen Felder, in denen sich ebenfalls verschachtelte Objekte befinden, denselben Wert (die Filterung funktioniert jedoch weiterhin einwandfrei). Das macht man nicht immer, nur manchmal ... Boolesche Werte für verschachtelte Objekte werden nicht korrekt berechnet.True zeigt alle Datensätze an, aberFalse zeigt nur den Datensatz an, dessen Wert @ iFalse.

Hat jemand anderes herausgefunden, wie man mit verschachtelten Objekten und dem Smart-Table-Modul umgeht?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage