【问题标题】:What is the proper way to use knockout with Slickgrid使用 Slickgrid 淘汰赛的正确方法是什么
【发布时间】:2012-07-27 03:42:56
【问题描述】:

将 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);

编辑功能位于我的视图模型上:

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:

http://jsfiddle.net/sbrqB/3/

【问题讨论】:

  • 我能够让它工作,但它不是我对象上真正的可观察属性。我必须替换数组中的对象,而 observable 数组正在跟踪它的更新 - 我还没有弄清楚为什么该属性不会。新小提琴:jsfiddle.net/sbrqB/8

标签: knockout.js slickgrid


【解决方案1】:

您可以结帐KoGrid

根据他们的页面:

KoGrid 的出现是为了满足我们对为 MVVM/Knockout 风格开发而构建的体面数据网格的需求。它从 SlickGrid 中汲取了大量灵感和架构,但始终是 KO。

我还没有尝试过(该项目仍被标记为 alpha),但我想将它集成到您​​的 KO 应用程序中会容易得多。

【讨论】:

    猜你喜欢
    • 2014-11-01
    • 2013-11-27
    • 2012-12-24
    • 2014-10-23
    • 2012-10-21
    • 2013-12-17
    • 2014-03-26
    • 2013-10-01
    • 1970-01-01
    相关资源
    最近更新 更多