【问题标题】:slickgrid showing object instead of valuesslickgrid 显示对象而不是值
【发布时间】:2014-10-02 02:12:57
【问题描述】:

我正在关注Slickgrid的例子

我正在使用 ajax 将数据加载到可观察数组中

$.ajax({
    url: "../Service/Data",
    type: "PUT",
    contentType: 'application/json',
    processData: false,
    data: JSON.stringify(Id),
    error: function (XMLHttpRequest, textStatus, errorThrown) {

        alert(errorThrown);
    },
    success: function (allData) {
        var mappedData= $.map(allData, function (item) {

            return new TableData(item);
        });
        self.MyArray(mappedData);
    }
});

然后在我的视图模型中是这样做的

grid = new Slick.Grid("#myGrid", self.MyArray(), columns, options);

在我看来,我会这样做

 <div id="myGrid" style="width:300px;height:420px;"></div>

但我在我的网格中得到低于输出。它不显示数据而是显示对象

这里有什么问题?

更新1

这是我的列定义

var columns = [
      { id: "title", name: "Title", field: "title" },
      { id: "duration", name: "Duration", field: "duration" },
      { id: "percent", name: "% Complete", field: "percent" }

    ];

    var options = {
        enableCellNavigation: true,
        enableColumnReorder: false
    };

这就是我的 obs 数组在实际代码中的样子

更新 2 这是我的表格数据

  function TableData(data) {

        this.id= ko.observable(data.id);
        this.duration= ko.observable(data.duration);
        this.percent= ko.observable(data.percent);
    }

我从服务器获取 json 数据

【问题讨论】:

  • self.MyArray() 返回什么?
  • @Gaetano self.MyArray() 返回数据数组
  • @Tanner 当我按照你说的方式进行操作时,我会得到预期的错误功能
  • @Gaetano 我得到了带有方法和原型的数组。在这个方法里面我有我的专栏。我不知道它被称为什么样的对象。可能是这个原因?
  • 这可能是原因 - 你能告诉我 MyArray() 的定义吗

标签: jquery html knockout.js slickgrid


【解决方案1】:

只是一个想法,您并没有显示从 ../Service/Data 返回的 JSON 格式实际上是什么,但是,您是否尝试过直接将返回的 JSON 数据写入 MyArray?

success: function (allData) {
    self.MyArray = allData;
}

【讨论】:

  • 我的意思是,如果您从 ajax 调用传回一个 JSON 数组,并且 JSON 中的属性与网格定义中的列 1:1 匹配,为什么不直接传递它到电网?顺便说一句,Column 被配置为期望“title”的属性,并且您将 data.id 写入 id 的属性(您想这样做吗?)。
  • 您是否尝试过使用我上面提供的代码或任何淘汰实用程序函数,例如 ko.mapping.fromJS(allData, {}, MyArray); - 有关映射选项的更多信息,请参阅 knockoutjs.com/documentation/plugins-mapping.html
  • 我尝试使用您的代码,但我得到 javascript 运行时错误 Object doesn't support this action
  • slickGrid 是否支持 ko.observable 中保存的数据,或者它是否希望 daat 是 JSON 或只是在一个普通的旧 JS 数组中?如果是后者 - 只需遍历 allData 并将每个项目推入数组中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-21
  • 2018-11-27
  • 1970-01-01
  • 2019-05-22
相关资源
最近更新 更多