0

我有一个提供 ajax 帖子的 ember 服务

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);
          }
        });
      });
  }
});

成功响应在我的组件中正常返回。但是如何让我的函数进度返回。所以我可以在我的模板上制作一个加载进度条..?

谢谢..

4

1 回答 1

0

据我所知,您正在服务中进行远程调用,并且希望在组件中显示进度。为此,您需要将相关数据保存在服务本身内;并在组件中显示进度。

这是我为您准备的用于说明此案的谜语。mock-remote-call-service是一个模拟服务,每 200 毫秒更新 10% 的进程。结果直接保存到服务本身。progress-displayer-component负责显示进度,启动远程调用任务,甚至显示返回的数据。

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

于 2017-04-20T14:09:11.467 回答