我想用网络服务返回的复杂json填充网格。我的json包含两件事:
通过指定schema.data,我已成功使用“数据”填充网格。
我的问题是网格配置(布局)。我在数据源的requestEnd
事件上获取了columns数组,并将其添加到customersSource
(数据源),以便我可以在gridOptions中访问它。
问题在于,即使我记录customersSource
对象时,我看到我添加的cols数组,并且填充了正确的数据,$scope.mainGridOptions.columns
未设置为{{ 1}}。
我认为这可能与customersSource.cols
异步设置但不应该用它的数据绑定处理这个事实有关吗?
我也在Data source vs. Angular读到我可能需要设置Observable,但我对于该怎么做感到困惑。
我该如何解决这个问题?
这是我的代码:
customersSource.cols
这是我的JSON
var customersSource = new kendo.data.DataSource({
transport: {
read: {
url: "http://....",
dataType: "json"
}
},
schema: {
data: "data"
},
requestEnd: function (e) {
this.cols = e.response.columns;
}
});
$scope.mainGridOptions = {
dataSource: customersSource, // OK
columns: customersDataSource.cols, // undefined - uses default
height: 500,
scrollable: true,
selectable: true
};
修改 我创建了一个测试项目的插件。正如你所看到的,我可以填充网格,但我对mainGridOptions.columns有问题。任何帮助都感激不尽! http://plnkr.co/edit/5pjFQGkgTivqVkxsFBse
答案 0 :(得分:0)
这是因为angularjs不知道第三方所做的更改而你错过了神奇的双向数据绑定。虽然我认为承诺在你的情况下会很好用
requestEnd: function (e) {
$scope.$apply(function(){
$scope.mainGridOptions.columns = e.response.columns
})
}