KoGrid JSON动态窗口小部件,嵌套调用服务器(KoGrid JSON Dynamic wid

2019-09-20 05:23发布

我的工作,我现在用KOGrid仪表板,我的想法是动态创建一堆部件和绑定数据到kogrid每个部件。 我有两个控制器(MVC4),其中拳头返回插件名称和所述第二返回结果(数据表),用于JSON格式每个插件的列表。 我使用JSON.Net JsonConvert转换的结果,以JSON格式,然后通过为JSON内容的结果。

我得到“未捕获的错误:在初始化时可观察到的阵列必须是一个数组,或者为null或undefined传递的参数”。 它是嵌套调用JSON的一个问题? 什么是处理复杂对象的数组,并将其绑定到多个网格最可靠的方式。 它是否有助于如果我使用knockout.mapping?

VAR部件= {};

var Widget = function (id, data) {
    this.id = ko.observableArray(id || []);     
    this.data = ko.observableArray(data || []);
};

var ViewModel = function (data) {
    var self = this;

    self.widgets = ko.observableArray(
                        ko.utils.arrayMap(data, function (i) {
                            return new Widget(i);
                        }));

    $.getJSON('Widgets/Get', null, function (data) {
        $.each(data, function (index, item) {
            $.getJSON('Home/GetWidgetDetails?widgetName=' + item.WIDGET_NAME,
                    function (result) {
                        self.widgets.push(new Widget({ id: item.WIDGET_NAME, data: result }));                            
                    });
        });
    });

};

 ko.applyBindings(new ViewModel(widgets));

Answer 1:

我猜你在收到此错误data的道具Widget类? 如果是这样,那么是的,它可能是的JSON结构data阵列。 如果它们是复杂的对象本身,你应该重复你做的小工具相同的过程。

  1. 做这些项目的对象定义。 也许WidgetItem
  2. 使用ko.utils.arrayMap到地图data阵列到WidgetItem
  3. 成功。

没有看到的结构data ,虽然,我不能给你任何东西更具体。



文章来源: KoGrid JSON Dynamic widgets, with nested server calls
标签: knockout.js