当对特定元素进行ko.applybinding时,绑定不适用于Knockout,ReferenceError

时间:2014-02-05 04:41:55

标签: javascript jquery knockout.js knockout-mapping-plugin

我有这个ajax来获取数据

var homeSummaryViewModel;

$(document).ready(function () {
    getHomeSummaryViewModel();

});
function getHomeSummaryViewModel() {

    $.ajax({
        url: "/api/homeservice/get",
        type: "get",
        contentType: "application/json",
        success: function (result) {            
            homeSummaryViewModel = ko.mapping.fromJSON(result);

            ko.applyBindings(homeSummaryViewModel, $("#homeSummary").get(0));

        },
        error: function (result) {
            //handle the error, left for brevity
        }
    });
}   

这是我的HTML

        

        <div class="plan-name-bronze">
            <h4>Home</h4>
            <div class="icon">
                <i class="fa fa-trophy fa-5x"></i>
            </div>

        </div>
        <ul class=" text-left" id="homeSummary">
            <li class="plan-feature">Completed Level : <span data-bind="text: Level"></span> </li>                
            <li class="plan-feature">Total Score : <span data-bind="text: Score"></span> </li>
        </ul>
    </div>
</div>

这是我的JSON

{"Level":"Noob","Score":788}

我在knockout-3.0.0.debug.js中遇到此错误,当id执行homeSummaryViewModel.peek()时,我得到null。我看到数据是从firebug中的服务器发送的,如上面显示的JSOn数据,ko.mapping不会抛出错误它只是不起作用可能???

  

ReferenceError:未定义级别返回新函数(“$ context”,   “$ element”,functionBody);

3 个答案:

答案 0 :(得分:2)

我必须使用

homeSummaryViewModel = ko.mapping.fromJS(result);

而不是

homeSummaryViewModel = ko.mapping.fromJSON(result);

答案 1 :(得分:0)

value绑定仅适用于表单输入元素;你需要使用text绑定。

答案 2 :(得分:0)

问题是你绑定了$ .get,我创建了一个简单的测试用例http://jsfiddle.net/PB9KL/,它运行正常。

var homeSummaryViewModel;
getHomeSummaryViewModel();


function getHomeSummaryViewModel() {

            homeSummaryViewModel = ko.mapping.fromJSON('{"Level":"Noob","Score":788}');

            ko.applyBindings(homeSummaryViewModel,document.getElementById("homeSummary"));

}