2014-02-07 4 views
0

EmberJS는 가능하면 어디에서나 경로에 의존 할 것을 권장하며 컨트롤러를 올바르게 설정하는 경로를 입력 할 때 매개 변수를 사용하기 쉽습니다. 하지만 누군가에게 위치를 전송하는 것에 신경 쓰지 않고 페이지 매김과 결합 된 복잡한 필터링을 동적으로 사용하려는 경우 어떻게해야할까요? 내가 알아 낸 것을 보여줄거야. 내 경로에서 너무 많은 관련 가이드를 만난 적이없는 한이 방법이 유용 할 수 있습니다.EmberJS의 페이지 매김 및 필터링

답변

2

첫째, 나는 서버 측에 어떤 :

1) 검색어 매개 변수를 잘 URL에 전송하는, 그래서 내가 has_scope를 사용합니다. 2) 색인 작업에 의해 생성 된 템플릿은 다음과 같습니다. { "액터": [.. 모델이 여기 있습니다], "메타": { "총": 10, "페이지": 1}} 그래서 총 페이지 양과 json 응답이있는 현재 페이지를 전달하십시오. 여기

Caster.ActorsIndexRoute = Ember.Route.extend 

    model: -> 
    @store.findQuery 'actor', 
     search: @get('controller.term') 
     page: @get('controller.page') 

    actions: 
    refresh: -> 
     @model().then (data) => 
     @set 'controller.model', data 

우리가 setupController는 '새로 고침'이벤트에 무엇을 반복 : 여기

는 경로입니다. 이 이벤트는 컨트롤러에 의해 전송됩니다 :

Caster.ActorsIndexController = Ember.ArrayController.extend 

    term: '' 
    page: 1 

    terms: (-> @reload()).observes('term', 'page') 
    meta: (-> @store.metadataFor('actor')).property('model') 
    updatePage: (-> @set 'page', @get('meta.page')).observes('model') 

    reload: -> @get('target').send('refresh') 

모든 것은 왼쪽이 '페이지'를 변경 컨트롤러의 속성과 모음의 다시로드의 원인이됩니다 매김 위젯을 구축하는 것입니다. '용어'속성이 변경 될 때도 마찬가지입니다.

여기서 한 가지 문제는 경로 초기화에 사용할 수있는 컨트롤러 속성이 없기 때문에 처음으로 범위가 지정되지 않은 컬렉션을 얻게된다는 것입니다.