将JSON映射到observableArray时出错

时间:2012-07-24 11:46:58

标签: javascript json knockout.js

无法将我的JSON数据加载到ko.observableArray中,并且不知道原因。

$(document).ready(function(){
    function Region(uid, name) {
        this.uid = ko.observable(uid);
        this.name = ko.observable(name);
    }

    function CompanyViewModel() {
        this.regions = ko.observableArray([]);
    }

    ko.applyBindings(new CompanyViewModel());   

    // Init.
    $.getJSON( '/regions/', 
        function(data){
            if(data.status == 'ok')
            {
                var mappedData = ko.utils.arrayMap(data.regions, function(item) {
                    return new Region(item.uid, item.name);
                });
                CompanyViewModel.regions( mappedData );
            }
        }
    );
});

调试器说:未捕获TypeError:对象函数CompanyViewModel()...没有方法'regions'

我是Knockout的新手,确定有一些明显的错误,但我不知道在哪里。

1 个答案:

答案 0 :(得分:3)

没有测试过,但是应该让你知道我的意思,我就是这样做的:

$(document).ready(function(){
    var Region = function(uid, name) {
        this.uid = ko.observable(uid);
        this.name = ko.observable(name);
    }

    var CompanyViewModel = function() {
        this.regions = ko.observableArray([]);
    }

    var model = new CompanyViewModel();
    ko.applyBindings(model);   

    // Init.
    $.getJSON( '/regions/', 
        function(data){
            if(data.status == 'ok')
            {
                var mappedData = ko.utils.arrayMap(data.regions, function(item) {
                    return new Region(item.uid, item.name);
                });
                model.regions( mappedData );
            }
        }
    );
});