1

これは私のjsファイルです:

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

これは私のhtmlファイルです:

<html>
<head>
    <script type='text/javascript' src='ko.js'></script>
    <script type='text/javascript' src='knockout-2.1.0.debug.js'></script>

</head>
<body>
    <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>
</body>
</html>

Uncaught ReferenceError: ko is not defined .

誰かがこれで私を助けることができますか?

前もって感謝します

4

3 に答える 3

8

JavaScript ファイルの順序を逆にしてみてください -

<script type='text/javascript' src='knockout-2.1.0.debug.js'></script>
<script type='text/javascript' src='ko.js'></script>

メインの「ノックアウト」jsファイルで定義される前に、ko.jsファイルがオブジェクトにアクセスしようとしていると思われます。ko

于 2012-07-13T08:29:12.480 に答える
0

私にとっての解決策は、上記のように ko スクリプトを配置し、ドキュメントが JQuery (または同等の) ドキュメント準備機能で読み込まれた後に ko.xyz コードを実行することでした。例えば

 $(document).ready(function(){
            var model = new ReviewersViewModel();
            ko.applyBindings(model);

            $('.datetimepicker_mask').datetimepicker({
                mask: '9999/19/39 29:59'
            });

            ko.bindingHandlers.datetimepicker = {
                init: function (element, valueAccessor, allBindingsAccessor) {
                    //initialize datepicker with some optional options
                    var options = allBindingsAccessor().datetimepickerOptions || {};
                    $(element).datetimepicker(options);

                    //handle the field changing
                    ko.utils.registerEventHandler(element, "change", function () {
                        var observable = valueAccessor();
                        try {
                            observable($(element).datetimepicker("getDate"));//****
                        }
                        catch (ex) { }
                    });

                    //handle disposal (if KO removes by the template binding)
                    ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
                        $(element).datetimepicker("destroy");
                    });

                },
                update: function (element, valueAccessor) {
                    var value = ko.utils.unwrapObservable(valueAccessor()),
                        current = $(element).datetimepicker("getDate");

                    if (value - current !== 0) {
                        $(element).datetimepicker("setDate", value);
                    }
                }
            };
        });
于 2014-04-01T12:36:05.057 に答える