2017-01-03 3 views
0

모두에게. 나는 Ember를 2.9.1에서 2.10으로 업데이트 한 후에 이상한 행동을 취했다. 이 업데이트 후, 링크가있는 도우미 링크를 탐색 할 때 입자 새로 고침 대신 전체 페이지 새로 고침이 발생했습니다. Ember 2.9.1에서는 입자가 새로 고쳐졌습니다. 어쩌면 나는이 업데이 트에서 뭔가를 놓쳤습니다. 여기 링크의 전체 새로 고침 페이지

내 목록에 대한 코드

응용 프로그램/router.js

import Ember from 'ember'; 
import config from './config/environment'; 

const Router = Ember.Router.extend({ 
    location: 'auto', 
    rootURL: '/app/' 
}); 


Router.map(function() { 
    this.route('home', { path: '/' }); 
    this.route('list', { path: '/list/:listId' }, function() { 
     this.route('lead', { path: 'lead/:leadId', resetNamespace: true }); 
    }); 
    this.route('pageNotFound', { path: '/page-not-found' }); 
}); 

컨트롤러/list.js

import Ember from 'ember'; 

export default Ember.Controller.extend({ 
    queryParams: ['page', 'sortBy', 'direction', 'archived'], 
    page: 1, 
    perPage: 50, 
    sortBy: 'createdAt', 
    direction: 'asc', 
    archived: false 
}); 

루트/list.js입니다

import Ember from 'ember'; 
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; 
import RouteMixin from 'ember-cli-pagination/remote/route-mixin'; 

export default Ember.Route.extend(AuthenticatedRouteMixin, RouteMixin, { 

    queryParams: { 
    page: {refreshModel: true}, 
    perPage: {refreshModel: true}, 
    sortBy: {refreshModel: true}, 
    direction: {refreshModel: true}, 
    archived: {refreshModel: true} 
    }, 

    intercom: Ember.inject.service('intercom'), 

    leadLink: 'lead', 

    model(params) 
    { 
    var intercom = this.get('intercom'); 
    var store = this.get('store'); 
    var list; 

    params.leadLink = this.leadLink; 

    if (params.listId) { 
     list = this.store.findRecord('list', params.listId).then(function (list) { 

     intercom.update({ 
      "Emails": list.get('user.discovered_emails'), 
      "Limit": list.get('user.max_discovered_emails') 
     }); 

     return list; 
     }); 
    } 
    else { 
     params.title = 'All leads'; 
    } 

    return Ember.RSVP.hash({ 
     list: list, 
     leads: this.store.query('lead', { 
     filter: this.getFilter(params) 
     }, { reload: true }).then(function (leads) { 
     params.total = leads.get('meta.total'); 
     leads.forEach(function (lead) { 
      var list = store.peekRecord('list', lead.get('listId')); 
      lead.set('list', list); 
      return lead; 
     }); 
     return leads; 
     }), 
     lists: this.store.peekAll('list'), 
     params: params 
    }); 

    }, 
// .... 

templates/components/sidebar-list-item.hb s

{{#link-to "list" list.id (query-params page=1 archived=false)}}<i class="icon-list-unordered"></i> {{list.name}} <span class="text-muted text-thin">{{#if activeLeadsCount}}({{activeLeadsCount}}){{/if}}</span>{{/link-to}} 

어떤 도움을 주셔서 감사합니다.

+0

정상적으로 보입니다. queryParams의 매개 변수를 refreshModel로 변경할 때마다이를 말합니다. refreshModel 속성을 제거하고 원하는대로 작동하는지 확인하십시오. – mk2

+0

{refreshModel : true}를 설정하려고했지만 아무 것도 변경되지 않았습니다. 2.9.1에서 모든 것이 예상대로 작동하기 때문에 이상합니다. – Dmytro

+0

"기사 경로 안에 들어가면 controller : articles의 category 속성을 변경하면 URL이 쿼리 매개 변수를 업데이트하게됩니다. 기본적으로 쿼리 매개 변수 속성을 변경해도 라우터가 완전히 전환되지는 않습니다 (즉, 호출 모델 훅과 setupController 등), 그것은 단지 URL을 업데이트 할 것입니다. " https://guides.emberjs.com/v2.10.0/routing/query-params/ – mk2

답변

0

죄송 전체 전환, 사람으로 선택하지 않으려면

는 3.Also는 {refreshModel: false}을 설정합니다. 나는 완전히 새로 고침되지 않은 것을 발견했다. 원을 로딩하는 application-loading.hbs가 있습니다. 그리고 그것은 애플 부팅시에만 나타나지만, https://github.com/emberjs/ember.js/pull/14545을 수정 한 후에는 목록 모델을 새로 고침 할 때마다 나타납니다. 어쨌든 도움에 감사드립니다!

0

내가 게시 된 코드에서 발견 된 문제를 지적하고 싶습니다

1.Inside 목록 경로 모델 후크, 당신은 peekAllpeekRecord를 사용하여 저장소에서 list 모델을로드하려고하고 내가 발견하지 않았습니다 코드를 저장하려면 list 모델을로드하십시오. 당신은 아무것도 얻지 않을 것이다 peekRecordpeekAll을하거나 경우 peekAll 또는 둘 모두가 서버에서 가져올 수 없습니다 어떤 이미 저장소에로드 반환 peekRecord 때문에, findAll('list')을하지 않고

.

list 모델 레코드를 store에로드해야합니다. 이를 위해 다음은 항상 호출 당신은 beforeModel 후크에 그것을 할 수 있습니다, 또는 당신은 그것을 부모 경로 우리는 (귀하의 경우 list.id에서) 동적 세그먼트 값을 제공하는 경우

beforeModel(transition){ 
this._super(...arguments); 
return this.store.findAll('list'); 
} 

2.For link-to 도우미 중 하나를 수행 할 수 있습니다 beforeModel, modelafterModel 후크. 당신이

+0

에서 1. 경로/응용 프로그램.js a have model() { if (this.get ('session.isAuthenticated')) { return Ember.RSVP.hash ({ 사용자 : this.store.find ('사용자', this.get 'session.data.authenticated.userId')), 목록 : this.store.findAll ('list') }); } }, 그럼 모든 것이 정상입니다. 모두. 2. 호출 모델이 필요하므로 통과했습니다. 3. {refreshModel : false}로 설정하려고했지만 어쨌든 완전히 새로 고침되었습니다. – Dmytro