2013-11-23 1 views
9

私はknockoutjsの完全なnoobです。私は最初から問題に直面しています。私はインストールガイドに記載されているすべての作業を行っていますが、動作させることはできません。ノックアウトを実行できません

マイHTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
    "http://www.w3.org/TR/html4/strict.dtd"> 
<HTML> 
    <HEAD> 
     <script type='text/javascript' src='js/knockout-3.0.0.js'></script> 
     <script type='text/javascript' src='js/myTasks.js'></script> 
     <TITLE>Your Tasks</TITLE> 
    </HEAD> 
    <BODY> 
    <p>First name: <strong data-bind="text: firstName"></strong></p> 
    <p>Last name: <strong data-bind="text: lastName"></strong></p> 
    </BODY> 
</HTML> 

私のviewmodel - myTasks.jsファイルに含まれている:

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

私は取得しています何がある:

First name: 

Last name: 

上記のコードはコードです最初のknockoutjsチュートリアルで使用されています。

なぜ私はそれを実行できませんか?私は本当に小さいものを見逃していることを知っていますが、私はそれを見つけられません。

+0

'$(document).ready(function(){});'?そして、開発者のコ​​ンソール –

+1

@u_mulder Btwコンソールは次のように言っています: 'TypeError:c is null' – chility

答えて

19

ラップあなたが$(document).ready(function() {});

$(document).ready(function() { 
    function AppViewModel() { 
     this.firstName = "Bert"; 
     this.lastName = "Bertington"; 
    } 
    ko.applyBindings(new AppViewModel()); 
}); 

にコードをノックアウトとjQuery自体を含めることを忘れないでください。

+0

最後のKO行だけが' document.ready() 'の中になければなりません。 'AppViewModel()'のような関数はその外にあるかもしれません。 – Roland

17

私はこの質問が長い間前に回答されたことは知っていますが、この問題に関する解決策を探す際にGoogleのトップ検索の1つです。 でないとは受け入れられた答えに暗示されているように、knockout.jsでJQueryを使用する必要があります。より良いソリューションは、ちょうどあなたの体の下にmyTask.jsを参照するスクリプトタグを移動するには、次のようになります。

<BODY> 
<p>First name: <strong data-bind="text: firstName"></strong></p> 
<p>Last name: <strong data-bind="text: lastName"></strong></p> 
<script type='text/javascript' src='js/myTasks.js'></script> 
</BODY> 

これは、あなたのviewmodelコードはjQueryのを含めることなく、作業できるようにする必要があります。

+1

ありがとうございます。これは外部依存の必要性を排除するため、はるかに優れた解決策でした。 –

関連する問題