2013-03-18 4 views
0

내 코드의 목표는 API 검색 문자열을 검색하는 것입니다.knockout.js api 검색 양식

그래서 양식을 작성하면 조회수가 달라집니다.

나는 다음과 같은 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'"/> 

하지만 난 텍스트 상자를 채울 경우 내가 기본 직원을 "지혜"얻을 onley? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

바인딩을 사용하여 html을 추가 할 수 있습니까? –

답변

0

을 나는 해결책을 발견 뒷조사 후 :

하나의 잠재적 인 문제는 관찰이 아닌 기본 배열로 getJSON에 직원을 전달하는, 그래서 당신은 시도 할 수 있다는 것입니다.

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()); 
0

여기에 무엇이 잘못되었지만 디버깅을했는지, 그리고 쿼리의 값이 apiurl에있는 것을 본 적이 있습니까?

$.getJSON(self.apiurl(), self.employees()); 
+0

$ .getJSON (self.apiurl(), self.employees()); 내가 시도한 것들 중 하나 였지만 쿼리 값이 전달되지 않는 것 같습니다. 그것은 undifined를 반환합니다 –

+0

그 의견이 의미하고자하는 것이 확실하지 않습니다! –

+0

$ .getJSON (self.apiurl(), self.employees()); 내가 시도한 것들 중 하나 였지만 쿼리 값이 정확하지 않은 것 같습니다. "undefined"를 반환합니다. –