0

XHR返回功能我有灰烬的服务通常提供AJAX后获得烬阿贾克斯服务

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

export default Ember.Service.extend({ 
    save(data) { 
    return new Ember.RSVP.Promise(
     function (resolve, reject) { 
     function progress(e){ 

      if(e.lengthComputable){ 
      let max = e.total; 
      let current = e.loaded; 
      let Percentage = (current * 100)/max; 
      console.log(Percentage); 
      if(Percentage >= 100) 
      { 
       // process completed 
      } 
      } 
     } 

     Ember.$.ajax({ 
      type: 'POST', 
      enctype: 'multipart/form-data', 
      url: ENV.APP.API_HOST + '/profile/lampiran-desas', 
      processData: false, 
      contentType: false, 
      cache: false, 
      data: data, 
      xhr: function() { 
      let myXhr = $.ajaxSettings.xhr(); 
      if(myXhr.upload){ 
       myXhr.upload.addEventListener('progress',progress, false); 
      } 
      return myXhr; 
      }, 
      success: function (response) { 
      resolve(response); 
      }, 
      error: function (error) { 
      reject(error); 
      } 
     }); 
     }); 
    } 
}); 

成功响应回在我的组件。但是如何让我的功能进步回归。所以我可以在我的模板上加载进度条..?

感谢..

+0

您需要手动设置加载状态。装载将仅处理路线的模型挂钩。有关详细信息,请参阅此twiddle https://ember-twiddle.com/#/53bd472bbeaa42d1790da2ba97a6a803?openFiles=templates.components.my-comp.hbs%2Ctemplates.components.my-comp.hbs其中,我将使用'isLoading'明确设置加载! –

回答

0

据我看,你这是在服务的远程调用,您希望显示组件中的进展。为此,您需要将相关数据保存在服务中;并显示组件中的进度。

这是twiddle我已经准备好为你说明情况。 mock-remote-call-service是一个模拟服务,每200毫秒更新一次进程10%。结果直接保存到服务本身。 progress-displayer-component有责任显示进度,启动远程呼叫任务,甚至显示返回的数据。

这只是一个模拟的例子来解释我的观点。我希望这有帮助。