1

私はノックアウト js にまったく慣れていませんが、ノックアウト js を使用してインターフェイスを作成する方法を学ぶことを楽しんでいます。しかし、インターフェースをより効率的にしようとしているときに、少し壁があります。私が達成しようとしているのは、revision_id を含む$('.document_checkbox').serializeArray()によって選択された要素のみを削除することです。次に、self.getDocument() への変更された呼び出しを使用してビュー モデルにエントリを再度追加し、再追加される変更されたレコードのみを渡します。$('.document_checkbox').serializeArray()の 'revision_id' 値に基づいて、配列からエントリを削除する方法を教えてください 。

function Document(data) {
    this.line_id = data.line_id
    this.revision_id = ko.observable(data.revision_id);
    this.status_id = ko.observable(data.status_id);
}

function DocumentViewModel() {
    var self = this;
    self.documents = ko.observableArray([]);

    self.getDocument = function(){
        //Reset arrays
        self.documents.removeAll();
        //Dynamically build section arrays
        $.getJSON("/Documentation/Get-Section", function(allData) {
            $.map(allData, function(item) {
                var section = { name: item.array_name, display_name: item.display_name, documents: ko.observableArray([])};
                self.documents.push(section);
            })
            //Add document objects 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));
                });
            });
        });
    }


    self.updateStatusBatch = function(data,event){
        $.post('/Documentation/Update-Status-Batch',
        { 
            revision_id : $('.document_checkbox').serializeArray(),
            status_id : event.currentTarget.value
        }).done(
        function(){
              //This is where I get confused.
        });
    }


}
4

1 に答える 1

0

/Documentation/Update-Status-Batch を変更して、削除されたアイテム ID を返すようにする必要があります。したがって、クライアント側で削除できます。

この「完了」機能を試してください:

function(removedItemId) {
    self.documents.remove(function(doc){ 
        return doc.status_id == removedItemId;
    })
}

remove関数を見てみましょう。

お役に立てば幸いです。

于 2013-06-12T12:56:59.190 に答える