2015-11-08 2 views
0

у меня есть какие-то действия в рефлюкс действий, это мои действиярефлюкс listenAndPromise сделать действие много раз

var BeritaActions = Reflux.createActions({ 
    'getListBerita': { 
    children: [ 
     'actions', 'completed', 'failed' 
    ] 
    }, 
    'getBerita': { 
    children: [ 
     'actions', 'completed', 'failed' 
    ] 
    }, 
}); 

BeritaActions.getListBerita.listen(function(param) 
{ 
    return BeritaUtil.listBerita(param) 
    .on('error', this.failed) 
    .end(this.completed); 
}); 

BeritaActions.getBerita.listenAndPromise(function(id) 
{ 
    return BeritaUtil.read(id) 
    .on('error', this.failed) 
    .end(this.completed); 
}); 

это мой магазин, и слушать действия

Reflux.createStore({ 
    onprogress: false, 
    type: null, 
    init() 
    { 
    this.listenTo(BeritaAct.getListBerita.completed, this.getInitData); 
    this.listenTo(BeritaAct.getListBerita.failed, this.getInitErrorData); 
    }, 
    setType(type) 
    { 
    return this.type = type; 
    }, 
    getCurrentData() 
    { 
    return _data; 
    }, 
    getInitData(field) 
    { 
    console.log(field) 
    let data = JSON.parse(field.text); 
    if(data.meta.code == 200) 
    { 
     if(typeof _data[this.type] == 'undefined')//first open 
     { 
     //console.log('first') 
     _data[this.type] = data.data; 
     }else//on load more = merging data 
     { 
     //console.log(_data[this.type]) 
     _data[this.type] = update(_data[this.type], {$merge: data.data}); 
     } 

     this.trigger(_data); 

    }else 
    { 
     Toas.error({title:data.meta.message, content:''}); 
    } 
    },... 

так я выполнять действия в моем компоненты

React.createClass({ 
    getInitialState() 
    { 
    if(Progress.isAjax()) 
    { 
     Progress.onProgress(true); 
     BeritaStore.setType('list'); 
     BeritaAct.getListBerita({}); 
    }else 
    { 
     //not ajax 
    } 
    return { 
     showloader: {display: 'none'}, 
     shownext: {display: 'block'} 
    }; 
    },.. 

Магазин может хорошо слушать действия и может вернуться на мой компонент реакции. но когда я проверяю проверку сети, я получил запрос на действие много раз, я не знаю, что происходит?

request many times

+0

Дон Не знаю, является ли это частью вашей проблемы, но у вас есть опечатка в .end (this.competed); '. Это должно быть «.end (this.completed)»; –

ответ

0

ОК, ребята, я решил эту проблему, пусть будет getInitData функции

getInitData(bind, field) 
{ 
    console.log(field) 
} 

я добавить параметр на getInitData функции, поэтому после того, как я console.log() второй В параметре, я получаю данные