2015-06-21 70 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只是將動作負載傳遞給它的回調參數。