m.prop()没有按预期工作

时间:2015-08-06 18:17:20

标签: mithril.js

目前,我正在使用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

当我运行应用程序时,它会给我以下错误:

  

未捕获的TypeError:ctrl.email不是函数

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

为什么m.prop()不能在这里工作?

1 个答案:

答案 0 :(得分:3)

经过一番挫折之后,我终于得到了答案。

错误来自一个相当愚蠢的错误。

由于我只导出了视图,因此require()知道控制器的登录模块的模块无法使用。

我刚刚将最后一行代码更改为

module.exports = login

它解决了这个问题。