1

我正在尝试学习 knockOut.js,但无法真正起步。当我调用 ko.applyBindings 时,我的模型始终未定义。

我已经尝试过这里已经回答的解决方案。

我也在 jsFiddle 中尝试过:这里

我有以下 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 将是非常愚蠢的事情。有人可以帮忙吗?

4

3 回答 3

1

ko.applyBindings不返回模型。您将模型传递给applyBinding它将绑定到 html。将您的代码修改为:

   function AppViewModel() {
       this.firstName = ko.observable("Bert");
       this.lastName = ko.observable("Bertington");
   }

   var model = new AppViewModel();
   ko.applyBindings(model);
   alert(model.firstName());
于 2012-12-06T12:09:02.057 回答
1

ko.applyBindings()没有返回您所期望的。创建模型,然后对其应用绑定。这是一个更新的小提琴

代码:

function AppViewModel() {
    this.firstName = "Davy";
    this.lastName = "Cassidy";
}

var model = new AppViewModel();
ko.applyBindings(model);


alert(model.firstName);
于 2012-12-06T12:09:16.023 回答
1

你确实犯了两个错误:

  1. ko.applyBindings() 不返回模型。

    // Create the view model
    var model = new AppViewModel();
    
    // Apply bindings using this model
    ko.applyBindings(model);
    
  2. 在您的小提琴中,您尝试在<label>元素上使用“值”绑定。此类元素没有“值”属性,因为您无法输入任何内容。您需要在此处使用“文本”绑定:

    <label id="lblFilename" data-bind="text: firstName"></label>
    

http://jsfiddle.net/4748N/8/

于 2012-12-06T12:09:49.753 回答