我正在努力学习knockOut.js并且无法真正开始。当我调用ko.applyBindings时,我的模型总是未定义的。
我已经尝试过已经回答here的解决方案。
我也尝试过jsFiddle:here
我有以下htm表格:
<head>
<title>Mashup</title>
<script src="Scripts/jquery-1.8.2.js" type="text/javascript"></script>
<script src="Scripts/knockout-2.2.0.js" type="text/javascript"></script>
</head>
//html body
<script type="text/javascript">
$(window).load(function () {
function AppViewModel() {
this.firstName = ko.observable("Bert");
this.lastName = ko.observable("Bertington");
}
var model = ko.applyBindings(new AppViewModel());
alert(model);
});
我也尝试过使用文档:
//I've also tried document ready but still not working.
$(document).ready(function () {
function AppViewModel() {
this.firstName = ko.observable("Bert");
this.lastName = ko.observable("Bertington");
}
var model = ko.applyBindings(new AppViewModel());
alert(model);
});
我知道ir会非常愚蠢。有人可以帮忙吗?
答案 0 :(得分:1)
ko.applyBindings
不会返回模型。您将模型传递给将绑定到html的applyBinding
。将您的代码修改为:
function AppViewModel() {
this.firstName = ko.observable("Bert");
this.lastName = ko.observable("Bertington");
}
var model = new AppViewModel();
ko.applyBindings(model);
alert(model.firstName());
答案 1 :(得分:1)
ko.applyBindings()
没有返回您的期望。创建模型,然后对其应用绑定。这是一个更新的fiddle。
代码:
function AppViewModel() {
this.firstName = "Davy";
this.lastName = "Cassidy";
}
var model = new AppViewModel();
ko.applyBindings(model);
alert(model.firstName);
答案 2 :(得分:1)
你确实犯了两个错误:
ko.applyBindings()不返回模型。
// Create the view model
var model = new AppViewModel();
// Apply bindings using this model
ko.applyBindings(model);
在你的小提琴中,你试图在<label>
元素上使用“值”绑定。这些元素没有“价值”属性,因为你不能输入任何东西。你需要在这里使用“text”绑定:
<label id="lblFilename" data-bind="text: firstName"></label>