0

我的代码的目标是搜索 API 搜索字符串:

因此,如果您填写表格,您将获得 hits 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 中查询的值是什么?

一个潜在的问题是您将员工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 回答