Knockout Mapping неправильно обновляет наблюдаемую коллекцию

У меня есть мой модуль, как определено здесь:

import ko = require("knockout");
import http = require("services/http");

class ProductSearch {
    searchText = ko.observable<string>();
    products = ko.observableArray();

    submitSearch = () => {
        http.get(`api/playground/customer/6B4F8534-1580-4973-A379-E2F26DF08D26/products`, { q: this.searchText() })
            .done(this.displayResults);
    };

    displayResults = (results) => {
        ko.mapping.fromJS(results, this.products);
    };
}

export = ProductSearch;

Однако при запуске вызов ko.mapping.fromJS() вообще не обновляет массив products. Я не хотел очищать его и добавлять элементы вручную (что, как я подтвердил, работает), так как меня заставили поверить, что ko.mapping может справиться со всем этим за меня, включая попытку поддерживать порядок элементов в множество.

Я что-то делаю не так?


person Neil Barnwell    schedule 25.04.2017    source источник
comment
Да, просто нужен дополнительный параметр   -  person Jason Spake    schedule 26.04.2017
comment
Было бы интересно узнать, почему это не сработало, поскольку перегрузки fromJS предполагают, что его опускание должно быть таким же, как и включение пустого объекта параметров.   -  person Neil Barnwell    schedule 26.04.2017
comment
Где вы видите сигнатуру перегрузки, которая предполагает, что это что-то иное, чем объект параметров? Если вы включите только два аргумента, предполагается, что второй является параметром, а не целью. Таким образом, пустой объект просто служит для того, чтобы поместить наблюдаемую цель в соответствующий слот третьего аргумента.   -  person Jason Spake    schedule 26.04.2017
comment
В Visual Studio intellisense, как указано на nuget.org/packages/knockout. сопоставление.TypeScript.DefinitelyTyped.   -  person Neil Barnwell    schedule 27.04.2017