2012-11-01 42 views
2

我開始學習knockoutjs,並且遇到了一個錯誤。 Aptana編輯器在以下位置顯示錯誤:Knockoutjs不工作

data-bind: .... 

標籤的屬性抱怨它是專有標籤。我已經確保包含所有必需的JavaScript文件,並且我已經檢查了以前的問題:knockoutjs template not working。 這裏是我的代碼:

<!DOCTYPE html> 
<html> 
    <head> 
     <script type='text/javascript' src='jquery-1.8.2.min.js'></script> 
     <script src='jquery.tmpl.min.js' type='text/javascript'></script> 
     <script src='knockout-2.2.0.js' type='text/javascript'></script> 
    </head> 

    <body> 
     <script> 
      function AppViewModel() { 
       this.firstName = "Bert"; 
       this.lastName = "Bertington"; 
      } 

      ko.applyBindings(new AppViewModel());  
     </script> 
     <p>First name: <strong data-bind="text: firstName"></strong></p> 
     <p>Last name: <strong data-bind="text: lastName"></strong></p> 
    </body> 
</html> 

即使忽略集錦,並希望該瀏覽器將顯示它我還是什麼也得不到了。我使用Firefox 16,但我也嘗試過IE 8,但無濟於事。

回答

2

將腳本標記移動到標記下方。

<body> 
    <p>First name: <strong data-bind="text: firstName"></strong></p> 
    <p>Last name: <strong data-bind="text: lastName"></strong></p> 
    <script> 
     function AppViewModel() { 
      this.firstName = "Bert"; 
      this.lastName = "Bertington"; 
     } 

     ko.applyBindings(new AppViewModel());  
    </script> 
</body> 
+0

偉大的工作,但爲什麼?爲什麼腳本應該在標記之後?我將要寫的所有腳本應該如何? –

+1

在腳本執行之前DOM尚未加載。另一種選擇是將其封裝在[jQuery的'ready'](http://api.jquery.com/ready/)函數中。 '$(function(){ko.applyBindings(new AppViewModel());});' – sghill

+1

內嵌您標記的腳本標記與瀏覽器對該標記的處理同步執行,所以'sghill'指出DOM元素不是準備好當你嘗試應用綁定。通過將腳本移動到底部,可以確保您定位的DOM元素可用。或者,使用jQuery'ready'回調將確保您的代碼在加載DOM之前不會運行。請參閱http://knockoutjs.com/documentation/observables.html ...搜索Activating Knockout。 –

相關問題