将 Knockout 与 slickgrid 一起使用,我可以添加一行以正常工作,但我无法让单个属性编辑工作。它抛出这个错误:
Uncaught TypeError: Property 'ProductName' of object #<Product> is not a function
所以它与我的 bindingHandler 有关,因为我在我的对象属性上使用 observables,如果我打开并重新评估数据,我只能获得正确的值来显示:
var data = ko.utils.unwrapObservable(settings.data);
$.each(data, function(index, item) {
var prop;
for (prop in item) {
if (item.hasOwnProperty(prop)) {
data[index][prop] = ko.utils.unwrapObservable(data[index][prop]);
}
}
});
var columns = ko.utils.unwrapObservable(settings.columns);
var options = ko.utils.unwrapObservable(settings.options) || {};
grid = new Slick.Grid(element, data, columns, options);
编辑功能位于我的 viewModel 上:
function ViewModel(data) {
var self = this;
self.gridData = ko.observableArray(data);
self.columns = [
{
name: 'Product ID',
id: 'ProductId',
field: 'ProductId'},
{
name: 'Color',
id: 'ColorName',
field: 'ColorName'},
{
name: 'Sku',
id: 'Sku',
field: 'Sku'},
{
name: 'Product Name',
id: 'ProductName',
field: 'ProductName'}
];
self.fnTestClickEdit = function() {
self.gridData()[0].ProductName("Product has been Edited " + new Date());
};
}
但是看到我在这方面的死胡同,我在这里的实施中是否做了一些公然错误的事情?
这是所有放在一起的jsFiddle: