目前,我正在使用Mithril
和CoffeeScript
创建一个简单的应用。
代码如下:
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()不能在这里工作?
答案 0 :(得分:3)
经过一番挫折之后,我终于得到了答案。
错误来自一个相当愚蠢的错误。
由于我只导出了视图,因此require()
知道控制器的登录模块的模块无法使用。
我刚刚将最后一行代码更改为
module.exports = login
它解决了这个问题。