0

エラー: バインディングを解析できません。メッセージ: ReferenceError: メッセージが定義されていません。バインディング値: テキスト: メッセージ。

バインディングが失敗する理由がわかりませんでした。

以下はJavaScriptコードです:

    var LogItemModel = function () {
        var self = this;

        function LogItem($root, appName, level, message) {
            self.appName = ko.observable(appName);
            self.level = ko.observable(level);
            self.message = ko.observable(message);
        }

        self.logItems = ko.observableArray();

        self.add = function (appName, level, message) {
            self.logItems.push(new LogItem(self, appName, level, message));
        };
    };


    $(document).ready(function () {
        var logItemModel = new LogItemModel();
        ko.applyBindings(logItemModel);
        var url = "http://localhost:49091/api/Log";

        $.getJSON(url, function (result) {
            $.each(result, function (idx, logItem) {
                logItemModel.add(logItem.ApplicationName, logItem.Level, logItem.Message);
                debugger;
            });
        }).error(function (e) {
        });

    });

以下はhtmlコードです:

<div id="LogItemList" data-bind="foreach:logItems">
    <span data-bind="text: message"></span>
</div>

LogItemList要素にバインディングを適用しようとしました

ko.applyBindings(logItemModel, $("#LogItemList")[0]);

しかし、これでもうまくいきませんでした。

4

1 に答える 1

2
function LogItem($root, appName, level, message) {
    self.appName = ko.observable(appName);
    self.level = ko.observable(level);
    self.message = ko.observable(message);
}

この関数では、自己が LogItemModel で参照されているため、次のように変更します。

function LogItem($root, appName, level, message) {
    var that = this;
    that.appName = ko.observable(appName);
    that.level = ko.observable(level);
    that.message = ko.observable(message);
}
于 2013-11-04T13:08:52.327 に答える