我正在尝试将UI网格实现到我的应用中。当我将静态数据分配给gridOptions.data
时,一切正常;但是,当我从服务器加载数据后动态地将数据分配给gridOptions.data
时,我总是得到一个空字符串。我尝试使用$timeout
函数复制动态行为,如下所示,结果仍然相同:空网格。
// ctrl开始
这很有效。
$scope.data = [
{ addedBy :"user", displayName:"Name1" },
{ addedBy :"user2", displayName:"Name2" },
{ addedBy :"user3", displayName:"Name3" }
];
这不;让网格空着。
$timeout(function () {
$scope.data = [
{ addedBy :"user", displayName:"Name1" },
{ addedBy :"user2", displayName:"Name2" },
{ addedBy :"user3", displayName:"Name3" }
];
});
其余代码保持不变。
$scope.columnDefs = [
{name: 'displayName'},
{name: 'addedBy'}
];
$scope.gridOptions = {
columnDefs: $scope.columnDefs,
data: $scope.data
};
// ctrl结束
// html开始
<div class="col-md-12 no-padding" ui-grid="gridOptions" class="grid"></div>
// html结束
我很漂亮,当数据变量发生变化时,ui-grid应该能够更新数据;那么我在这里缺少一些基本的东西吗?
答案 0 :(得分:1)
初始化网格时,数据不可用。您必须手动调用notifydataChange
以便网格更新或重新分配,就像Ronald说的那样。
他们在后者的documentation中有一个例子
答案 1 :(得分:0)
您可以做的另一个选项是将网格定义默认为空数组,并在服务器调用的响应中将其分配给网格。
$scope.columnDefs = [
{name: 'displayName'},
{name: 'addedBy'}
];
$scope.gridOptions = {
columnDefs: $scope.columnDefs,
data: []
};
$timeout(function () {
$scope.data = [
{ addedBy :"user", displayName:"Name1" },
{ addedBy :"user2", displayName:"Name2" },
{ addedBy :"user3", displayName:"Name3" }
];
$scope.gridOptions.data=$scope.data;
});
答案 2 :(得分:0)
我有非常动态的网格,其中数据刷新了很多参数。我总是直接将数据分配回$ scope.gridOptions.data。
即
$scope.gridOptions.onRegisterApi = function (gridApi) {
//set gridApi on scope
$scope.gridApi = gridApi;
$scope.gridApi.core.notifyDataChange(uiGridConstants.dataChange.COLUMN);
};
此处为您的每个搜索结果重新分配数据
NotifyDataChange事件可以像这样使用:
testImgPath = os.path.abspath(os.path.join(__file__, '../', 'testFiles', 'imgName.jpg'))
您必须在控制器中添加uiGridConstants依赖项。 但是根据我的调查结果/测试,如果您将数据重新分配给gridOptions.data,则不需要notifyDataChange事件。