刷新jquery数据表映射的敲除绑定

时间:2013-09-10 22:06:58

标签: knockout.js knockout-mapping-plugin

我有一个绑定到映射的可观察数组的knockOUtDataTable

我需要通过ajax刷新dataTables绑定。

最初是通过使用以下映射选项将其映射到名为batchHistories的可观察数组

创建的。
var mappingOptions = {
            'batchHistories': {
                create: function (options) {
                    return new BatchHistoryViewModel(options.data, dataContext);
                },
                key: function (batchHistory) {
                    return ko.utils.unwrapObservable(batchHistory.Id);
                }
            } 
        };

ko.mapping.fromJSON(data, self);

我正在执行以下操作来刷新绑定和dataTable,但是当它运行时,数据在应该的时候不会改变。如果我刷新整个页面,它就是最新的。

        self.refresh = function () {
                $.when(this.dataContext.getBatchHistories(0, "Any"))
                    .done(function (result) {
                        {
                            self.destroyDataTableFromId(dataTableId);
                            ko.mapping.fromJSON(result, self);
                            self.createDataTable(dataTableId);
                        }

                    });
        };

我是否需要重做映射或其他任何内容?你能看到我错过的东西吗?

createDataTable函数只有jqueryDataTable jquery的东西。

1 个答案:

答案 0 :(得分:1)

我的问题是返回的数据未被识别为JSON 所以改成

ko.mapping.fromJS(result, self);

做了这个伎俩