我正在尝试使用knockout将我的html按钮绑定到一个函数。该功能仅在单击按钮时弹出警告消息,而是在页面加载时执行该功能。
这是我的HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="main.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<script type='text/javascript' src='knockout-2.2.0.js'></script>
<script type='text/javascript' src='studentapp.js'></script>
</head>
<body>
<div class="container">
<div class="new_student">
<input type="text" class="name" placeholder="name" data-bind="value: person_name, hasfocus: person_name_focus()">
<input type="text" class="age" placeholder="age" data-bind="value: person_age">
<button data-bind="click: createPerson">Create</button>
</div>
</body>
</html>
这是我的js:
function createPerson(){
alert("Name ");
};
ko.applyBindings(new createPerson());
控制台显示以下内容:
未捕获的TypeError:无法读取属性&#39; nodeType&#39;为null
有什么想法吗?
答案 0 :(得分:2)
视图模型应该如下所示
var createPerson = function(){
var self = this;
self.name = "Mike";
self.sendAlert = function(){
alert(self.name);
};
};
ko.applyBindings(new createPerson());
然后您的按钮可以使用
<button type="button" data-bind="click:sendAlert"></button>
答案 1 :(得分:0)
尝试在您的脚本中添加defer标记,并将所有javascript代码放在</html>
标记之后,这是一个很好的做法。
<script type='text/javascript' src='studentapp.js' defer="defer"></script>
答案 2 :(得分:0)