私は「Mithril JS」を学ぶ新しいFrond-end開発者です。私はMVCパターンを使ってサンプルログインページを作成しました。コンソールエラー後にログインフォームが機能しない:Uncaught TypeError:vm.nameは関数ではありません
Uncaught TypeError: vm.name is not a function
この問題を解決するにはどうすればよいですか?
index.htmlを
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Mithril Js</title>
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="bower_components/todomvc-common/base.css">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="bower_components/mithril/mithril.min.js"></script>
<script src="bower_components/todomvc-common/base.js"></script>
</head>
<body>
<section id="MitApp"></section>
<script src="js/app.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="js/views/login.js"></script>
<script src="js/controllers/todos.js"></script>
</body>
</html>
App.Js(ルートマップを作成する)
var app = app || {};
(function(window){
'use strict';
app.ENTER_KEY = 13;
app.ESC_KEY = 27;
m.route.mode = "hash";
m.route(document.getElementById('MitApp'), '/', {
"/":app,
"/:filter":app
});
})(window);
ログインフォーム
var app = app || {};
app.view = function(ctrl){
var vm = app;
console.log(vm);
return[m(".container", {style: {"margin-top": "55px"}}, [
m(".col-md-4.col-md-offset-4", [
m("h4", "Login"),
m("form[action=''][enctype='multipart/form-data'][method='post']", [
m(".form-group", [
m("input.form-control[placeholder='Username'][type='name']", {value:vm.name(), onchange:m.writeAttr("value", vm.name)})
]),
m(".form-group", [
m("input.form-control[placeholder='Password'][type='password']", {value:vm.password(), onchange:m.writeAttr("value",vm.password)})
]),
m(".form-group", [
m("button.btn.btn-primary.pull-right[id='login'][type='submit']",{onclick:vm.submit.bind(vm)}, "Login")
])
])
]),
"\
"
])]
}