带启动参数的模块控制器

时间:2015-01-07 07:08:24

标签: mithril.js

使用m.module时,我经常想为控制器构造函数提供参数,以便第一次渲染以正确的数据开始。但是,Mithril文档和示例始终显示module.controller()module.vm.init(),不带参数。

要解决这个问题,并module.controller(initData)我已经使用这个小实用程序函数来包装和扩展现有的m.Module:

var mModule = function (dom, mod, arg) {
  return m.module(dom, {
    view: mod.view,
    controller: mod.controller.bind(mod.controller,arg)
  });
};

问题:

  1. 这是反模式吗?是否有其他建议的方法使用自定义外部数据实例化模块?
  2. 这会导致m.route出现问题吗?我在源代码中看到了一些关于递归调用的提及但是无法理解它。
  3. 在上述2点之后,m.module缺乏参数是否是故意的设计选择?
  4. 哦......感谢现有文件和讨论所涉及的所有人。

1 个答案:

答案 0 :(得分:1)

不,它不是反模式,它是explored in one of the blog articles的想法,也是Moria(Mithril的路由器扩展库)