【问题标题】:Knockout applyBindings does not applyBinding淘汰赛applyBindings 不applyBinding
【发布时间】:2014-02-23 21:24:20
【问题描述】:

我刚开始使用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 有效,否则无效。

这里缺少什么???

拉加兹。

【问题讨论】:

    标签: json knockout.js


    【解决方案1】:

    这是分配 observables 的错误方法。

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

    这样做。

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

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

    【讨论】:

    • 现在完美运行!但是为什么当 Alert() 被放置在那里时,它的任务是错误的呢?
    • 谢谢;这对我来说绝对是必须的。
    猜你喜欢
    • 2013-06-19
    • 1970-01-01
    • 2013-08-06
    • 2014-08-18
    • 2014-03-25
    • 2012-02-26
    • 2014-08-14
    • 2013-04-10
    • 2012-04-08
    相关资源
    最近更新 更多