2016-02-04 29 views
2

如果我不想在DOM中产生更改,如何从一些DOM节点订阅事件? 我如何在cyclejs或motorcyclejs中实现这样的事情?如何在cyclejs(motorcyclejs)中订阅没有DOM修改的事件?

function main({DOM}) { 
    DOM.select('button').events('click').forEach(e => console.log(e)) 
    return {} 
} 

run(main, {DOM: makeDOMDriver('#app')}) 

更新: DOM树已经运行的主要功能就退出:

<div id="app"> 
    <button>Click</button> 
</div> 

上面的例子不工作,事件侦听器没有连接到DOM节点。

+0

什么DOM节点?您没有创建任何DOM节点来附加它。 – m59

+0

我雾的提到,该按钮节点已经存在于DOM树 – Maciej

+0

我怀疑你只是不打算预先填充这样的标记根元素。我有一种强烈的感觉,那是一种不好的做法。 Cycle可能寻找通过虚拟dom生成的东西,或者具有其他逻辑,而不仅仅是调用根元素上的querySelector。不过,我不确定。 – m59

回答

0

这里本应表现出你的设置应该是什么样子,如果你想查看您的DOM点击的能力:

const view =() => { 
    return div('app',[ 
    button('Click') 
    ]); 
}; 

const intent = ({DOM}) => { 
    const intent$ = DOM.select('button').events('click').map(e => console.log(e)); 
    return intent$; 
}; 

const main = (sources) => { 
    const intent$ = intent(sources); 
    const view$ = Rx.Observable.just(view); 
    return { 
    DOM: view$ 

    }; 
}; 

run(main, {DOM: makeDOMDriver('#app')})