我正在学习flux
架构。我正在尝试添加新用户。当用户点击UI上的save
按钮时,在我的控制器中,我会调用动作创建者的createUser
函数来启动异步请求:
addNewUser: function () {
HdfsUsersActions.createUser($scope.newUser);
}
动作创建者功能:
createUser: function (user) {
return restService.createHdfsUser(user).then(function (data) {
flux.dispatch('platform-manager-ADD_USER', data);
});
}
然后我需要知道异步请求何时结束,以及隐藏用户在html中添加UI表单的状态。这里的正确方法是什么?
我可以这样做:
HdfsUsersActions.createUser($scope.newUser).then(function() {
//hide user add form on UI
});
但这似乎不是正确的方法,因为似乎在flux
架构下控制器获取数据的唯一方法来自store
。在这里,使用then
似乎打破了该规则,因为数据来自action creator
答案 0 :(得分:0)
当您收到来自异步通话的回答时,您将发送事件platform-manager-ADD_USER
:
flux.dispatch('platform-manager-ADD_USER', data);
然后,您应该在商店中收听此事件,并使用收到的data
更新自己。然后,听取此更改的所有组件都将收到更新并在需要时自行重新呈现。