0

私はこのコードを持っています

$(document).ready(function()
{
    "use strict";

    function ObjectB(data)
    {
        /* I WANT TO ACCESS foo HERE */
    }

    function ObjectA(data)
    {
        var mappedObjectBs = [];

        this.ObjectBs = ko.observableArray([]);
        mappedObjectBs = $.map(data.ObjectBs, function(item) {
            return new ObjectB(item);
        });
        this.ObjectBs(mappedObjectBs);
    }

    function SampleViewModel()
    {
        var self = this;
        self.ObjectAs = ko.observableArray([]);

        $.getJSON('data/foo.json', function(foo) {

            /* foo IS AVAILABLE HERE */

            $.getJSON('data/bar.json', function(bar) {
                var mappedObjectAs = [];
                mappedObjectAs = $.map(bar, function(item) {
                    return new mappedObjectAs(item);
                });
                self.ObjectAs(mappedObjectAs);
            });
        });
    }

    ko.applyBindings(new SampleViewModel());
});

ここでやりたいことは、foo内部にアクセスすることObjectBです。

これを行う方法はありますか?

ObjectBこのタイプのソリューションを採用した理由は、オブジェクトが冗長な JSON 呼び出しを実行したくないためです。

4

1 に答える 1

1

親オブジェクト参照を子オブジェクトに渡さないのはなぜですか? このようなもの:

function ObjectB(data, root) {
    this.root = root;

    alert(this.root.someProperty);
}

function ObjectA(item, root) {
    var mappedObjectBs = [];

    mappedObjectBs.push(new ObjectB(item, root));

    this.ObjectBs(mappedObjectBs);
}

function SampleViewModel() {
    this.someProperty = true;

    //Inside your ajax call
    new ObjectA(item, this);
}
于 2013-09-16T08:40:49.897 に答える