4

このページでチュートリアルがどのように機能するかは理解していますが、ローカルでセットアップして電卓を作成しようとしており、knockout.js を機能させることができません。これは、knockout.js オンライン チュートリアルのように初期化または入力されません。

HTML

<html>
<head>
    <script type="text/javascript" language="javascript" src="../knockout-2.1.0.js"></script>
    <script type="text/JavaScript" language="javascript">
        function AppViewModel() {
            this.firstName = ko.observable("Bert");
            this.lastName = ko.observable("Bertington");
        }
        // Activates knockout.js
        ko.applyBindings(new AppViewModel());
    </script> 
</head>
<body class="calc" onLoad="createnav()">

<div id="all">

    <div id="calc">

        <p>First name: <strong data-bind="text: firstName"></strong></p>
            <p>Last name: <strong data-bind="text: lastName"></strong></p>

            <p>First name: <input data-bind="value: firstName" /></p>
            <p>Last name: <input data-bind="value: lastName" /></p>
    </div>
    <div id="info">
       <!-- outputs will be here -->
    </div>
</div>
</body>
</html>

ノックアウト js バージョン 2.1.0 を使用しています。の位置srcは正しいです。

フォルダ構造

  ----------
  | Root   |
  ----------_____________________
     |                             |
   -------------------        ------------       ---------------
  | knockout-2.1.0.js |      |  pphcalc   | ___ | HeroPilot.asp |
   -------------------        ------------       ---------------

助言がありますか?

4

2 に答える 2

1

jquery を使用していない場合は、このために特別にロードしないでください。代わりに、window.onload でノックアウトを有効にすることができます。例:

ko.applyBindings 呼び出しを関数でラップします。

function startKnockout() {
    ko.applyBindings(new AppViewModel());
};

「開始」関数の名前を window.onload に渡します。関数名に () を追加しないでください。これにより、関数がすぐに実行されるのを防ぎ、代わりに、ウィンドウが読み込まれたときにコールバック関数として呼び出されるようにします。

window.onload = startKnockout;
于 2013-06-05T10:47:52.137 に答える
0

ヘッダー スクリプト タグでバインドを適用しているため、ko.applyBindings(new AppViewModel()) 行が実行される時点でバインドする要素はまだありません。

JQuery Window.load 関数のコールバックを提供して、バインディングが適用される前にすべてが適切にロードされるようにすることができます。例:

<script type="text/JavaScript" language="javascript">
    function AppViewModel() {
        this.firstName = ko.observable("Bert");
        this.lastName = ko.observable("Bertington");
    }

    // Activates knockout.js
    $(window).load(function() {
        ko.applyBindings(new AppViewModel());
    });
</script> 
于 2012-07-26T15:53:20.643 に答える