2016-03-16 2 views
0

Я новичок в CycleJS, и я хотел бы подписаться на события «click» дочернего компонента из его родительского компонента; но он не работает. Я могу подписаться на события внутри дочернего компонента. Возможно ли подписаться на события дочернего компонента из его родительского компонента? Если это возможно, как я могу это сделать? Вот родительский компонент:CycleJS - события подписного события дочернего компонента

import Rx from 'rx'; 
import Cycle from '@cycle/core'; 
import CycleDOM from '@cycle/dom'; 
import isolate from '@cycle/isolate'; 
import _ from 'underscore'; 
import Inboxmails from './../components/inboxmails'; 

const {div} = CycleDOM;  
const Main = (sources) => { 

     const inboxmails=Inboxmails({DOM: sources.DOM}); 

     sources.DOM.select('#inbox_1') 
       .events('click') 
       .do(event => event.preventDefault()) 
       .subscribe(event => { 
        console.log(event); 
       }); 


     const vtree$ = Rx.Observable.of(
        div('.wrapper', [ 
          inboxmails.DOM 
         ])); 

      return { 
       DOM: vtree$ 
      }; 
     }; 



    export default (sources) => isolate(Main)(sources); 

И это ребенок компонент

import Rx from 'rx'; 
import Cycle from '@cycle/core'; 
import CycleDOM from '@cycle/dom'; 
import isolate from '@cycle/isolate'; 
const { div} = CycleDOM; 

const Inboxmails = function (sources) { 
    const inboxmails$ = Rx.Observable.of(div([ 
     div("#inbox_1",[ 
      "Click here" 
     ])]) 
    ); 
    return { 
     DOM: inboxmails$  
    }; 
}; 

export default (sources) => isolate(Inboxmails)(sources); 

ответ

4

ли ребенок вернуться мойку событий, что родительские потребности.

const Inboxmails = function (sources) { 
    const inboxmails$ = Rx.Observable.of(div([ 
     div("#inbox_1",[ 
      "Click here" 
     ])]) 
    ); 
    return { 
     DOM: inboxmails$, 
     clicks: sources.DOM.select('#inbox_1').events('click') 
    }; 
}; 

Затем родитель может использовать inboxmails.clicks.

Однако в Cycle.js не должно быть никаких подписчиков в вашем коде (если это не для отладки). Подписка на вызовы должна выполняться только в драйверах.

Смежные вопросы