0

私のビューモデルには、item.array_nameフィールドで名前を付けた監視可能な配列の動的配列を構築する次の関数があります。ただし、配列に Document オブジェクトを設定するのに行き詰まっています。これは、配列ごとにページ内で同じ HTML インターフェイスを複数回再利用するためです。誰かが私が間違っている方向に私を向けることができますか、それとも彼らのより良いアプローチですか?

     self.getDocument = function(){
        //Reset arrays
        self.documents.removeAll();

        //Dynamically build arrays
        $.getJSON("/Documentation/Get-Section", function(allData) {
            $.map(allData, function(item) { 
                var obj = {};
                obj[item.array_name] = ko.observableArray([]);
                self.documents(obj)                   
            })

        });

        //Add document object to the arrays
        $.getJSON("/Documentation/Get-Document", function(allData)
            $.map(allData, function(item) { 
                var temp_array = 'self.documents.'+item.array_name
                eval(temp_array+'(new Document(item))')
            });
        });

    }
4

1 に答える 1

2

私はあなたのオブジェクトを再調整します:

 self.getDocument = function(){
    //Reset arrays
    self.documents.removeAll();

    //Dynamically build arrays
    $.getJSON("/Documentation/Get-Section", function(allData) {
        $.map(allData, function(item) { 
            var section = { name: item.array_name, documents: ko.observableArray([])};
            self.documents.push(section);
        })

    });

    //Add document object to the arrays
    $.getJSON("/Documentation/Get-Document", function(allData){
        $.map(allData, function(item) { 
        var section = ko.utils.arrayFirst(self.documents(), function(documentSection) {
            return documentSection.name === item.array_name;
        });
            section.documents.push(new Document(item));
        });
    });
}
于 2013-06-05T13:44:36.327 に答える