2015-06-21 57 views
0

我刚开始使用reactjs /与webpack作出反应。我非常喜欢listenAndPromise异步模式,但是我遇到了一个问题。我得到了下面的代码:异步请求与商店数据

操作:

var ResumeService = require('services/ResumeService'); 
var ResumeActions = Reflux.createActions({ 
    'save': { 
     asyncResult: true 
    } 
}); 
ResumeActions.save.listenAndPromise(ResumeService.save); 

ResumeService:

var http = require('utils/http'); 
var ENDPOINT = '/resumes/'; 
module.exports = { 
    save: function() { 
     return http.post(ENDPOINT + 'save', { 
      resume: ?????????? 
     }); 
    }, 
} 

和实体店的一部分:

var RendererActions = require('actions/RendererActions'); 
var ResumeStore = Reflux.createStore({ 
    listenables: [ResumeActions], 
    resume: Immutable.fromJS(ResumeExample), //nested object 

    onSaveCompleted: function(id) { 
     ..... 
    }, 

    onSaveFailed: function() { 
     .... 
    } 
    ... 
}); 

所以当用户改变,简历商店中的变量被更新。现在用户想要保存更改,并且他点击一个触发Action.save()的按钮。我的问题出现了:如何将resume变量从商店传递给上面的service文件?

奇怪的是,如果我在service文件做var Store = require('stores/ResumeStore');,它具有价值object {},这只有当我包括在服务商店发生,我认为这是与无限循环的要求或类似的东西这个。 (商店需要采取措施,措施需要服务,服务需要商店)

回答

0

为什么不在简历服务中的save方法中添加简历作为参数?

module.exports = { 
    save: function(resume) { 
     return http.post(ENDPOINT + 'save', { 
      resume: resume 
     }); 
    }, 
} 

然后ResumeActions.save.listenAndPromise(ResumeService.save);应该工作。 listenAndPromise只是将动作负载传递给它的回调参数。