2012-12-06 90 views
1

我想學習knockOut.js並且不能真正離開地面。當我調用ko.applyBindings時,我的模型總是未定義的。爲什麼Knockout.js不能綁定

我試過已經回答的解決方案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會是一件非常愚蠢的事情。任何人都可以幫忙嗎?

回答

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/

+0

感謝您的+1 – davy

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()); 
+0

謝謝 - 我認爲你是在第一:) – davy

1

ko.applyBindings()沒有返回你所期望的。創建模型,然後對其應用綁定。這是更新的fiddle

代碼:

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

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


alert(model.firstName); 
+0

謝謝,+1了點。 – davy