ui-grid模板中的ui-sref创建的错误链接

时间:2018-10-26 09:18:59

标签: javascript angularjs angular-ui-router angular-ui-grid

有一个令人讨厌的错误,该错误会导致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。这样,表格中的所有链接在所有页面上都是正确的。但是,这会导致表在自动刷新时闪烁,因此这只是一个临时解决方案。

0 个答案:

没有答案