2012-02-09 2 views
1

내 응용 프로그램에서 일부 사용자를 검색하기 위해 검색 양식을 만들고 싶습니다. 이 양식에는 많은 기준 (성, 이름, 생년월일 등)이 있습니다. 하지만 내 컬렉션을 필터링하기 위해 양식을 게시하는 방법을 이해하지 못합니다. fetch 메소드를 사용할 수 없습니다. 왜냐하면 GET 메소드를 사용하면 검색 기준이 URL에 표시되기 때문입니다. 사실, JSON에서 검색 기준을 포함하는 POST 요청을 서버에 제출하고 사용자 목록을 검색하고 싶습니다.검색 기준 양식 및 모음

백본 설명서를 읽었지만 그렇게 할 수있는 것을 찾지 못했습니다. 이 기능은 백본에서 지원되지 않습니까? 이 요구 사항을 구현하기위한 몇 가지 해결 방안이 있습니까? 한마디로 사전

답변

1

에서

덕분에, 나는 백본 당신이 설명하고있는 무슨에 적합 생각하지 않습니다. 더 긴 버전을 읽으십시오 ...

귀하의 질문에 따르면, 백본은 귀하의 사용자 모음을 표시하는 데 적합 할 것이라고 생각하지만 은 적합하지 않습니다. 필터 기준 제출시.

기준 모델을 만들고 모델의 특성을 Username, Birthday 등으로 설정하면 백본을 사용하여 서버에 게시 할 수 있습니다. 그러나 백본을 사용하여 저장하면 기준을 저장 한 것으로 간주됩니다. 해당 POST에서 서버로 되돌아 오는 결과는 사용자 목록이 아닌 기준의 업데이트 된 속성으로 간주됩니다.

+0

백본 컬렉션을 직접 사용하는 것이 가능하지 않다는 귀하의 답변에 감사드립니다. 그러나 나머지 응용 프로그램에서는 백본을 사용하고 싶습니다. 그래서 ($ .ajax를 사용하여) 직접 POST 요청을 제출하고 UserCollection.refresh (users)를 사용하여 성공 콜백에 내 콜렉션을 채우는 검색 액션을 구현하는 것이 가능합니다. 그런 다음 ListView를 다시 렌더링 할 수 있습니다. 이것을 할 수 있습니까? – sylmandel

+0

물론입니다. ajax를 사용하여 POST 한 다음 성공 콜백 (json 배열의 사용자 일 가능성이 높음)을 사용하는 양식을 작성하면 App.Users = new UsersCollection (json)과 같은 작업을 수행하여 해당 콜렉션을 백본보기로 전달할 수 있습니다. 비올라, 디자인 된대로 백본을 사용하고 있습니다 :) 행운을 빈다. – timDunham

0

Tim이 정확히 백본의 의미가 정확하지 않습니다. 즉, 적어도 Backbone 모델을 사용하여 검색 기준의 상태를 추적 할 것이라고 생각합니다. 이 모델에서는 모델의 상태를 직렬화하고 서버 자체에 POST하는 검색을 활성화하는 사용자 정의 메서드를 추가합니다. 이 메서드의 성공에 따라 결과를 사용하여 현재 사용자 컬렉션을 다시 설정합니다. 여기

코드 내 생각이다 :

var SearchModel = Backbone.Model.extend({ 
    defaults: { 
    firstName: "*", 
    lastName: "Smith" 
    }, 
    search: function() { 
    $.ajax({ 
     dataType: "json", 
     type: "POST", 
     data: this.toJSON(), 
     success: function(data) { 
      this.options.peopleCollection.reset(data); 
     } 
    }) 
    } 
}); 

var myPeopleCollection = new PeopleCollection(); 
var mySearch = new SearchModel({ peopleCollection: myPeopleCollection }); 

mySearch.set({ firstName: "Steve"}); 
mySearch.set({ lastName: "Smith" }); 

mySearch.search();