2015-08-06 4 views
1

В настоящее время я создаю простое приложение, используя Mithril и CoffeeScript.m.prop() не работает как ожидалось

Код выглядит следующим образом:

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() не работает должным образом?

ответ

3

После некоторого разочарования я наконец получил ответ.

Ошибка была связана с довольно глупой ошибкой.

Поскольку я только экспортировал представление, для модуля не было никакого способа, чтобы модуль входа в систему знал о контроллере.

Я просто изменил код последней строки

module.exports = login 

и решить эту проблему.