为什么Knockout.js没有绑定

时间:2012-12-06 12:04:21

标签: knockout.js

我正在努力学习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会非常愚蠢。有人可以帮忙吗?

3 个答案:

答案 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)

你确实犯了两个错误:

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

    // Create the view model
    var model = new AppViewModel();
    
    // Apply bindings using this model
    ko.applyBindings(model);
    
  2. 在你的小提琴中,你试图在<label>元素上使用“值”绑定。这些元素没有“价值”属性,因为你不能输入任何东西。你需要在这里使用“text”绑定:

    <label id="lblFilename" data-bind="text: firstName"></label>
    
  3. http://jsfiddle.net/4748N/8/