0

私のコードの目標は、API 検索文字列を検索することです。

したがって、フォームに入力すると、bij のヒット名が表示されます。

次の Knockout.js スクリプトを使用しました。

var viewModel=
{
    query : ko.observable("wis"),
};

function EmployeesViewModel(query)
{
    var self = this;
    self.employees = ko.observableArray();
    self.query = ko.observable(query);
    self.baseUri = BASE + "/api/v1/search?resource=employees&field=achternaam&q=";

    self.apiurl = ko.computed(function() {
        return self.baseUri + self.query();
    }, self);
    //$.getJSON(baseUri, self.employees);
    //$.getJSON(self.baseUri, self.employees);
    $.getJSON(self.apiurl(), self.employees);
};

$(document).ready(function () {
    ko.applyBindings(new EmployeesViewModel(viewModel.query()));
});

HTMLバインディングは次のとおりです。

<input type="text" class="search-query" placeholder="Search" id="global-search" data-bind="value: query, valueUpdate: 'keyup'"/>

しかし、テキストボックスに入力すると、デフォルトの「wis」従業員しか取得できませんか? 私は何を間違っていますか?

4

2 に答える 2

0

ここで何が問題なのか完全にはわかりませんが、デバッグして apiurl の query の値を確認しましたか?

潜在的な問題の 1 つは、基になる配列ではなく、監視対象として従業員を渡すことですgetJSON。そのため、次のことを試すことができます。

$.getJSON(self.apiurl(), self.employees());
于 2013-03-18T09:57:07.597 に答える
0

掘り下げた後、解決策を見つけました。

var employeesModel = function(){

        var self = this;

        self.u = base +'/api/v1/search';
        self.resource = 'employees';
        self.field = 'achternaam';
        self.employees = ko.observableArray([]);
        self.q = ko.observable();

        //Load Json when model is setup
        self.dummyCompute = ko.computed(function() {
            $.getJSON(self.u,{'resource': self.resource, 'field': self.field, 'q':self.q }, function(data) {
                    self.employees(data);
             });

        }, self);
    };

    ko.applyBindings(new employeesModel());
于 2013-03-19T13:00:14.837 に答える