尝试从 jquery DataTables 中的 jquery 触发器更改 ko.observable 时出现 TypeError 循环对象值

TypeError cyclic object value when trying to change a ko.observable from an jquery trigger inside jquery DataTables

我试图在单击 jquery.DataTables table 行时将 ko.observable 值更改为该行的 ID。 在激活周期中从服务器获取数据后,我在 durandal 的附加函数中实例化了 DataTable。即使没有任何点击逻辑,我也无法在实例化 Datatable.

后更改可观察值

代码如下:

self.attached = function(view, parent) {
    self.selectedCategory().schedule_id(1337);
    self.dt = $('#reservation_schedule_table').DataTable();
}

工作正常。但是,当我这样写的时候,

self.attached = function(view, parent) {
    self.dt = $('#reservation_schedule_table').DataTable();
    self.selectedCategory().schedule_id(1337);
}

我收到循环对象错误。

TypeError: cyclic object value
return JSON.stringify(ko.utils.unwrapObservable(data), replacer, space);
knockou...7981312 (line 537, col 19)

谁能告诉我这是为什么以及如何防止这种情况发生?

我想我明白了。因为从模块返回的唯一东西是 viewModel 本身的新实例,所以 DataTable 实例必须与附加函数的视图参数相关。还没有完全理解这是为什么。但我会继续阅读它。 对于初学者,代码应该是这样的:

self.attached = function(view, parent) {
    view.dt = $('#reservation_schedule_table').DataTable();
    self.selectedCategory().schedule_id(1337);
}

并且在生命周期函数之一中使用数据表的任何地方,它都必须是 view.dt