Knockout applyBindings不适用于绑定

时间:2014-02-23 11:26:46

标签: json knockout.js

我刚开始使用knockout.js,在尝试显示JSON数据时遇到困难。

我的HTML

<p>Dealer Location: <input id="dealerlocation" data-bind="value: DealerLocation" /></p>
<p>Contact Report Date: <input id="crdate" data-bind="value: CRDate" /></p>

我的脚本块

function viewAction() {
    var self = this;
    self.DealerLocation = ko.observable("");
    self.CRDate = ko.observable("");
};

var viewActionModel = new viewAction();

function GetActionByID() {
    $.ajax({
        type: "POST",
        url: "/ws/someservice.asmx/GetAction",
        data: "{pacid: '" + $('input[id$=hidActionID]').val() + "'}",
        contentType: "application/json;charset=utf-8",
        dataType: "json",
        success: function (response) {
                var action = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;
                $.each(action, function (index, axn) {                        
                    viewActionModel.DealerLocation = axn.DealerLocation;
                    viewActionModel.CRDate = axn.CRDate;                        
                });
            }
        });
}

$(document).ready(function () {
    GetActionByID();
    //alert(viewActionModel.DealerLocation);
    ko.applyBindings(viewActionModel);
});

注意:如果我取消注释警告,那么applyBinding会起作用,否则就不起作用。

这里缺少什么???

Ragards。

1 个答案:

答案 0 :(得分:2)

这是分配可观察对象的错误方法。

viewActionModel.DealerLocation = axn.DealerLocation;
viewActionModel.CRDate = axn.CRDate;  

这样做。

viewActionModel.DealerLocation(axn.DealerLocation);
viewActionModel.CRDate(axn.CRDate);  

通过执行您现在所做的操作,您将使用常规变量替换observable。它正在处理警报,因为这种替换发生在绑定之前,淘汰赛只是拿起你的常规变量。阅读有关可观察量的更多信息。