3

我正在运行一个带有 express 的 Node 服务器,它呈现翡翠。我试图让我的客户端使用 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>

应用程序.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 回答