有一个令人讨厌的错误,该错误会导致UI路由器ui-sref
从第16行开始为ui-grid中的表行创建错误的链接。
我有一个ui-grid
(v.4.6.3),必须显示一个元素列表。每个元素都可以具有指向某个实体(例如公司)的链接,并且当用户单击该链接时,将打开该实体的信息窗口。该表格以页为单位,每页15个元素。后端使用Spring提供的Page功能在页面中发送此数据。
从Angular组件调用以下两个函数,并为ui-grid
准备数据,并将结果分配给grid-options.data
。
angular.module('ViewManagement').service('tableViewService', function ($http) {
return{
....
function prepareTemplate(key, tableData, row, col, linkedData) {
let parentLinkKey = key + '_pid';
tableData[parentLinkKey] = row[key].value[0].parentId;
let parentIdData = '{{row.entity.' + parentLinkKey + '}}';
col.cellTemplate = '<div class="ui-grid-cell-contents">'
+ '<a ng-show="' + Boolean(parentIdData)
+ '" ui-sref="tabView.viewNameInfo({viewName: \'entity/' + key + '\', id: \'' + parentIdData + '\'})">'
+ linkedData + '</a>'
+ '</div>';
}
function prepareTableData() {
//this cycles through the incomming data and searches where to put links, when finds - calls prepareTemplate(...)
} } }
tabView.viewNameInfo
是另一个负责页面的组件,它提供有关链接实体的信息。
这是表格单元格中的链接通过Chrome>检查的外观:
<a ng-show="true"
ui-sref="tabView.viewNameInfo({viewName: 'entity/company', id: '8'})" class="ng-binding"
href="#!/entity%2Fcompany//1/info">Some Company</a>
麻烦在于该ID(在href属性中//后面出现)。 ui-sref
中的参数正确-链接应指向ID = 8的公司,但href
中的链接指向ID = 1的公司,这是错误的。如果所有项目都显示在单个页面中,则该元素仅出现在表第二页上或第二行或第十六行上的元素上。
感谢您的帮助,或者至少是在何处进行搜索的载体。
UPD。
通过在HTML中的ng-if="visible"
块中添加ui-grid
来设法找到一种解决方法。当表正在获取数据时,visible
变量为false
,而在接收到数据时,visible
被设置为true
。这样,表格中的所有链接在所有页面上都是正确的。但是,这会导致表在自动刷新时闪烁,因此这只是一个临时解决方案。