3

ジェイドをレンダリングするエクスプレスでノードサーバーを実行しています。クライアント側でknockout.jsを使用しようとしていますが、ビューが更新されません...コンソールにエラーが表示されず、何が問題なのかわかりません。

ページ:

extends layout

    block content

    script(src='knockout/knockout-2.2.1.debug.js', type='text/javascript')
    script(src='js/app.js', type='text/javascript')

    p Hi,
        strong(data-bind="text: firstName")

レンダリングされたhtml:

<!DOCTYPE html>
<html>
    <head>
    <link rel="stylesheet" href="/stylesheets/style.css">
    </head>
    <body>
        <script src="knockout/knockout-2.2.1.debug.js" type="text/javascript"></script>
        <script src="js/app.js" type="text/javascript"></script>

        <p>Hi,<strong data-bind="text: firstName"></strong></p>

    </body>
</html>

app.js:

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

ko.applyBindings(new AppViewModel());

ここに欠けているものがありますか、それとも Node.js と Express でこれを実現することは不可能ですか?

4

2 に答える 2

3

ko.applyBindings()DOM が既にロードされた後に呼び出すようにする必要があります。

app.js のコードをwindow.onloadまたはjQuery のready()関数でラップするか、スクリプト タグを の下に移動します<p>Hi,<strong data-bind="text: firstName"></strong></p>

于 2013-05-23T20:47:19.013 に答える
-2

// これは私の js ファイルです (function () {

//START THE APP WHEN DOCUMENT IS READY
$(function () {
    function AppViewModel() {
        var self = this;
        self.firstName = "Hamza";
       // self.lastName = ko.observable("Bertington");
    }
    ko.applyBindings(new AppViewModel());
});

})();

于 2016-09-06T13:16:30.500 に答える