m.prop() 未按预期工作

m.prop() not working as expected

目前我正在使用 MithrilCoffeeScript 创建一个简单的应用程序。

代码如下:

m = require 'mithril'
login = {}

login.controller = ->
    @email = m.prop ''
    @password = m.prop ''
    @onSubmit = ->
        return
    return

login.view = (ctrl) ->
  m 'center.login', [
    m 'aside.logo', m "img[src='/img/logo.svg']"
    m 'article.heading', m 'h3','Enter your email and password'
    m "input.email[placeholder='email'][type='email']",
        onchange: m.withAttr('value', ctrl.email)
        value: ctrl.email()
    m "input.password[placeholder='password'][type='password']"
        onchange: m.withAttr('value', ctrl.password)
        value: ctrl.password()
    m "submit.button button-primary[href='/#/signup']",
        onclick: ctrl.onSubmit()
        value: 'Submit'

  ] 

m.mount document.getElementById('content'), login

module.exports = view: login.view

当我 运行 应用程序时,出现以下错误:

Uncaught TypeError: ctrl.email is not a function

我认为错误的可能原因是 mount 函数没有正确配置模块。

为什么 m.prop() 在这里不起作用?

经过一番折腾,我终于得到了答案。

这个错误是一个相当愚蠢的错误。

因为我只导出了视图,所以require()的模块无法知道controller的登录模块

我刚把最后一行代码改成了

module.exports = login

它解决了问题。