【发布时间】:2018-06-25 16:09:04
【问题描述】:
我正在尝试将视图模型与KnockoutJS 中的 html 页面相关联。
视图模型在外部文件中定义。并且 html 页面引用了这个视图模型。我正在使用requirejs 加载文件依赖项。
define(['knockout-latest'], function (ko) {
var SimpleListModel = function(items) {
this.items = ko.observableArray(items);
this.itemToAdd = ko.observable("");
this.addItem = function() {
if (this.itemToAdd() != "") {
this.items.push(this.itemToAdd()); // Adds the item. Writing to the "items" observableArray causes any associated UI to update.
this.itemToAdd(""); // Clears the text box, because it's bound to the "itemToAdd" observable
}
}.bind(this); // Ensure that "this" is always this view model
};
ko.applyBindings(new SimpleListModel(["Alpha", "Beta", "Gamma"]));
//return SimpleListModel;
});
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="styles.css" />
<script type="text/javascript" src="knockout-latest.js"></script>
<script type="text/javascript" data-main="viewmodel" src="require.js"></script>
<script type="text/javascript" src="jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="viewmodel.js"></script>
</head>
<body>
<form data-bind="submit: addItem">
New item:
<input data-bind='value: itemToAdd, valueUpdate: "afterkeydown"' />
<button type="submit" data-bind="enable: itemToAdd().length > 0">Add</button>
<p>Your items:</p>
<select multiple="multiple" width="50" data-bind="options: items"> </select>
</form>
</body>
</html>
我收到以下错误:
require.js:5 Uncaught Error: Mismatched anonymous define() module
我想知道如何在单独的文件中加入带有视图模型的 html 页面。
【问题讨论】:
标签: javascript knockout.js requirejs