2017-12-17 2 views
0

조치로 모달을 추가하거나 편집하는 등의 변경을 한 후에 모델을 다시 새로 고침/다시로드해야합니다. 나는이 같은 많은 주제를 보았으나, 더 이상 사용되지 않거나 제 경우에는 작동하지 않습니다.신기루에서 데이터를 변경 한 후 ember 새로 고침/새로 고침 모델

이 "listing.js"라는 내 component.js-파일입니다

import Component from '@ember/component'; 

export default Component.extend({ 
    actions: { 
     togglePower: function(a){ 
      console.log(a); 
      var data = new Array(); 
      data.push(a); 
      $.ajax({ 
       cache:false, 
       type: 'POST', 
       url: "/api/device", 
       data: JSON.stringify(data), 
       contentType: "application/json" 
       }) 

       this.get('users.single.households.single.rooms.single.devices.single').send('refresh'); 
     } 
     } 
}); 

미라지 내 데이터를 수신하고 함께 작업 할 수 있습니다. 하지만 지금은 내 변경 사항을 보려면 페이지를 새로 고침해야합니다. 그래서 목록의 마지막 줄을 추가하려고했습니다 .js는

this.get('users.single.households.single.rooms.single.devices.single').send('refresh'); 

그러나 이것은 나에게 도움이되지 않습니다.

TypeError: this.get(...) is undefined

이 내 경로입니다 :

 model(){ 
...}, 
     actions: { 
      refresh: function() { 
       this.refresh(); 
       } 
      } 

>  } 

답변

0

새로 고침을 호출하기 위해, 당신은 폐쇄 조치를 사용해야 콘솔과 함께 제공됩니다. 구성 요소 파일의 아약스 이후에해야 할 일

this.get('on-refresh')(); 

'on-refresh'는 구성 요소로 전달되는 함수입니다. 이 경우 새로 고침 동작입니다.

{{listing on-refresh=(route-action "refresh")}} 

route-action 당신이 컨트롤러를 거치지 않고 템플릿에서 직접 경로 작업을 호출 할 수 있습니다이 부가 기능에 https://github.com/DockYard/ember-route-action-helper에서 온다.

그래서 여기서 한 것은 새로 고침 기능을 구성 요소에 전달한 다음 필요한 경우 구성 요소가이를 호출하는 것입니다.

+0

감사합니다. 이것은 도움이되지만 완전히 작동하지는 않습니다. 나는 이것을 넣는다 .get ('on-refresh')(); listing.js의 my ajax와 my listing.hbs 상단의 {{listing on-refresh = (route-action "새로 고침"}}}. 그것은 매우 내 사이트 속도가 느려지고 그것을로드 할 수 없습니다. 하지만이 과 같은 버튼이 정상적으로 작동합니다. 내 토글 파워 액션 후에이 동작을 호출 할 수 있습니까? 내 아약스 직후에? – panx36

+0

이렇게하면 사이트 속도가 느려질 수 있습니다.로드하는 데 시간이 걸리는 이유를 확인해보십시오. 또한 ajax가 끝난 후에'this.get ('on-refresh')를 호출해야한다는 점을 잊어 버렸다. '$ .ajax(). then (() => {this.get ('on-refresh')()})' – dorindo

+0

나는 아약스의 그 부분으로 옮겨졌고 오류가 발생했다 : _this.get (. ..)가 함수가 아닙니다. – panx36

관련 문제