关于json:淘汰applyBindings不applyBinding

Knockout applyBindings does not applyBinding

我刚开始使用 knockout.js,在尝试显示 JSON 数据时卡住了。

我的 HTML 是

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

我的脚本块是

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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 有效,否则无效。

这里缺少什么???

拉加兹。


这是分配 observables 的错误方法。

1
2
viewActionModel.DealerLocation = axn.DealerLocation;
viewActionModel.CRDate = axn.CRDate;

这样做。

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

通过做你现在所做的,你正在用常规变量替换 observables。它正在使用警报,因为此替换发生在绑定和淘汰赛刚刚拾取您的常规变量之前。阅读有关 observables 的更多信息。