我创建了一个MVC 4.0项目来测试Knockout,标记如下所示(BTW我从NUGET加载了所有最新的东西)下面显示的是从MVC渲染View后的客户端源代码。我查看了网络端,看到所有链接和脚本都到达了客户端。浏览器是Chrome。控制台没有显示任何错误。最后,永远不会呈现myMessage文本。如果我在JS中放置断点,我确实看到Knockout库被调用了......只是想知道我在这里做错了什么。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<script src="/Scripts/jquery-2.1.1.js"></script>
<script src="/Scripts/jquery.validate.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js"></script>
<script src="/Scripts/knockout-3.2.0.js"></script>
<link href="/Content/site.css" rel="stylesheet" />
<script src="/Scripts/modernizr-2.6.2.js"></script>
</head>
<body>
<h2>Index</h2>
Today's message is: <span data-bind="text: myMessage"></span>
<script type="text/javascript">
var viewModel = {
myMessage: ko.observable() // Initially blank
};
viewModel.myMessage("Hello, world!"); // Text appears
</script>
</body>
</html>
答案 0 :(得分:3)
你需要调用ko.applyBindings。试试这个:
<script type="text/javascript">
var viewModel = {
myMessage: ko.observable() // Initially blank
};
ko.applyBindings(viewModel) // you need to initialize ko :)
viewModel.myMessage("Hello, world!"); // Text appears
</script>
答案 1 :(得分:1)
你错过了淘汰'applyBindings'中最重要的部分。
构建视图模型后,只需调用
即可第1步:起点
ko.applyBindings(viewModel)
第2步:下一个视图模型执行
var viewModel = {
myMessage: ko.observable()
};
参考淘汰文档http://knockoutjs.com/documentation/introduction.html
用于测试您的方案的示例小提琴Here