我正在使用Mithril作为我们的MVC框架&我想利用丰富的JQuery / Jquery UI功能。当我将jQuery与Mithril结合起来时,我想了解“Do’s and Do not’s”
我理解的是,我可以使用Mithril配置来访问真实的DOM元素&绑定到各种jQuery函数安全。
Using jQuery UI functions with Mithril
但是,如何在类或ids上使用jQuery选择器来定位真正的DOM元素,如
附加一个jQuery日期选择器
beforeShow: function(input,inst) { $('#ui-datepicker-div').addClass("mydatepicker"); },
或隐藏div
$("#mydiv").hide();
导致$(‘blah’)===未定义的进度的危险是什么?
真的很想了解这两个组件如何/应该相互交互。
解决方法
简而言之,所有配置函数都保证在DOM树创建后运行。所以从配置中可以调用$(bla),而不用担心元素是否被绘制。
使用Mithril的注意事项(或者说,任何允许子模板被安装和卸载的系统)是可以通过条件逻辑从DOM中删除元素。因此,建议您将配置附加到要受jQuery插件影响的元素,或者在函数中包装元素子树,以使其更明显的是使用querySelector的配置适用于特定范围的元素。
对于大量的jQuery调用,如果正在查询的元素是否存在,那么实际上并不重要(例如$(“。foo”)。如果页面中没有.foo存在,则hide()根本不执行任何操作)。
要关心的主要事情是,您不想从DOM本身驱动太多的状态(这在jQuery中有些习惯)。例如,切换面板的可见性可能是可以在jQuery中更快地完成的事情,但是如果规范数据源是DOM中的CSS类,则从页面加载到达可见和不可见状态更困难它由jQuery代码控制,而不是单向流入视图的视图模型标志。