2

我尝试使用 jquery 中包含的 knockoutjs 脚本和我自己的 js 文件运行应用程序,该文件具有与控件的 ViewModel 实际绑定。

每次运行应用程序时都会出现异常。

这是我的系统还是 Visual Studio 的问题?我什至尝试在浏览器中单独运行 html 文件,我看不到任何异常,但它阻止了我执行所有其他预期从 knockoutjs 完成的功能。

请在这方面帮助我

这是我的完整代码

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="Scripts/jquery-1.7.1.min.js"></script>
    <script src="Scripts/knockout-2.2.0.js"></script>

    <script type="text/javascript">        // Here's my data model
        debugger;
        function viewModel() {
            this.day = ko.observable('24');
            this.month = ko.observable('02');
            this.year = ko.observable('2012');

            this.fullDate = ko.computed(function () {
                return this.day() + "/" + this.month() + "/" + this.year();
            }, this);
        };

        ko.applyBindings(new viewModel());

    </script>

</head>
<body>
    <p>Day:
        <input data-bind="value: day" /></p>
    <p>Month:
        <input data-bind="value: month" /></p>
    <p>Year:
        <input data-bind="value: year" /></p>
    <p>The current date is <span data-bind="text: fullDate"></span></p>


</body>
</html>
4

1 回答 1

14

您在浏览器呈现 html 之前调用了 applyBindings。您必须将脚本标签移动到页面底部或将代码放入文档就绪处理程序:

<script type="text/javascript"> 
$(function(){ 
    debugger;
    function viewModel() {
        this.day = ko.observable('24');
        this.month = ko.observable('02');
        this.year = ko.observable('2012');

        this.fullDate = ko.computed(function () {
            return this.day() + "/" + this.month() + "/" + this.year();
        }, this);
    };

    ko.applyBindings(new viewModel());
});
</script>
于 2013-09-25T08:55:09.170 回答