我有一个显示数据的网格。我希望能够通过单击网格行来路由到新视图。现在我甚至无法注册行点击/选择。我已尝试过我的网格定义:
onRegisterApi: function (gridApi ) {
$scope.gridApi = gridApi;
gridApi.selection.on.onRowSelectionChanged($scope, function (rows) {
$scope.mySelections = gridApi.selection.getSelectedRows();
});
},
在html中调用mySelections:
<p>{{mySelections}}</p>
导致错误:无法读取属性&#39; on&#39;未定义的。但是,我无法说出什么是未定义的&#39;。
我还尝试了一个单独的功能:
$scope.gridOptions.onRegisterApi = function (gridApi) {
$scope.gridApi = gridApi;
gridApi.selection.on.rowSelectionChanged($scope, function (row) {
alert(row.isSelected);
//$scope.mySelections = gridApi.selection.getSelectedRows();
});
};
但它返回相同的错误。
我已将ui.grid和ui.grid.selection添加到我的angular.module中。我很想找到一个使用rowselect链接到新页面的实际示例,但我必须找到任何内容。
答案 0 :(得分:3)
无法读取未定义的属性'
建议您的selection
对象上没有gridApi
属性,我会仔细检查您是否真的以正确的方式添加了依赖项:
angular.module('app', [
'ui.grid',
'ui.grid.selection'
]);
接下来,调用gridApi.selection.on.onRowSelectionChanged
将无效,因为该方法名为rowSelectionChanged
而不是onRowSelectionChanged
。你在第二个例子中就是这样。对于其余部分,您的代码似乎没问题,或许在网格定义的其余部分中出现了问题。这是一个使用ui.router
进行视图更改的示例:
$scope.gridOptions = {
enableRowSelection: true,
enableRowHeaderSelection: false,
multiSelect: false,
onRegisterApi: function (gridApi) {
$scope.gridApi = gridApi;
gridApi.selection.on.rowSelectionChanged($scope, function (rows) {
var selection = gridApi.selection.getSelectedRows();
$state.go('item', {item: selection[0]});
});
}
};
答案 1 :(得分:0)
别忘了添加&#34; ui-grid-selection&#34;归因于你的DIV:
<div class="gridStyle" ui-grid="gridOptions" ui-grid-selection ... ></div>
&#13;