0

私はこれを持っています: MyModel:

function MyModel(title, status, user, lastUpdated, local_id) {
    this.title = title;
    this.status = status;
    this.reported_by = { username: user };
    this.utc_last_updated = lastUpdated;
    this.local_id = local_id;
    return this;
}

そして、私はこの render_and_update() 関数を持っています:

function render_and_update(owner, newList, callBack){

    function tbodyWriter(id, MyModel) {

      var tRow = '<tr class="example-row"><th class="local-id">' + MyModel.local_id 
        + '</th><th class="title">' + MyModel.title +'</th><th class="status">'
        +MyModel.status +'</th><th class="reported-by">' + MyModel.reported_by.username 
        + '</th><th class="last-updated">' + MyModel.utc_lastUpdated + '</th><th class="display-none">' 
        + MyModel.utc_lastUpdated.getTime() + '</th></tr>';
      return tRow;

    }

    $('table-collection').dynatable({
        dataset: {
            records: newList,
            perPageDefault: 10,
            perPageOptions: [5, 10, 20]
        },
        writers: {
            _rowWriter: tbodyWriter
        }
    });
    callBack();
}


function MainController() {
    getUpdatedData(function(owner, updatedData) { /* make ajax call & returns updated records list on success*/
        render_and_update(owner, updatedData, function() { /* function having problem */
            console.log('end..');
        });
    });
}

$('my-button').click(MainController);

問題は、ボタンをクリックするとrender_and_update()関数が呼び出され、最初にレコードセットが挿入されますが、2回目のクリックではデータセットが新しいデータセットに更新されません...

DOM が更新されないのはなぜですか?

ありがとう。

4

1 に答える 1

0

私は自分で問題を解決しました..

それは私の問題を解決しました:

if(clicked) {
     dynatable.settings.dataset.originalRecords = issuesList;
     dynatable.process();
}

更新された update_and_render() 関数と MainController() 関数:

function render_and_update(clicked, owner, newList, callBack){

    function tbodyWriter(id, MyModel) {

      /* Nothing changed in this function. i.e., same as above in question. */

    }

    var dynatable = $('table-collection').dynatable({
        dataset: {
            records: newList,
            perPageDefault: 10,
            perPageOptions: [5, 10, 20]
        },
        writers: {
            _rowWriter: tbodyWriter
        }
    }).data('dynatable');

    if(clicked) {
        dynatable.settings.dataset.originalRecords = issuesList;
        dynatable.process();
    }

    callBack();
}

function MainController() {
    getUpdatedData(function(owner, updatedData) { /* make ajax call & returns updated records list on success*/
        render_and_update(true, owner, updatedData, function() { /* function having problem */
            console.log('end..');
        });
    });
}

これが将来他の人に役立つことを願っています!

于 2015-09-15T08:47:07.977 に答える