在UI网格中传递对象属性会得到未定义的错误

时间:2018-08-19 05:03:22

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

在UI网格中传递对象属性时遇到问题。

我正在尝试通过使用UI-Grid中的cellTemplete选项将对象属性传递给函数,但出现了未定义的错误。

我能够将索引传递给函数,而不是行数据的实际属性。

如何将对象属性传递到deleteMember函数?

vm.TeamMembersGridOptions = {
    enableGridMenu: false,
    enableSorting: true,
    enableHorizontalScrollbar: 0, /*always hide horizontal scroll bar*/
    enableVerticalScrollbar: 1, /*always show vertical scroll bar*/
    rowHeight: 40,
    minRowsToShow: 5,
    columnDefs: [
        {
            enableHiding: false,
            enableColumnMenu: false,
            width: '10%',
            field: 'edit',
            cellClass: 'ui-grid-cell-contents',
            cellTemplate:
                '<a class="ui-action-type-mouse" ng-click="grid.appScope.vm.deleteMember(rowRenderIndex, row.entity.member)" title="Delete"><img src="resources/images/fa_remove.png"></img></a>'
        },
        data: vm.teamMembers
    ]

function deleteMember(idx, member) {
    console.log(member);
    var params = {
        member: vm.teamMembers[idx]
    };
    var user = params.member.userProfile;
    var current = params.member.current;
    var messageText;
    var headerText;
    if (!current) {
        messageText = "Are you sure you want to delete this user: " + user.firstName + " " + user.lastName + "(" + user.email + ")?";
        headerText = "Delete Team Member?";
    }
    else {
        messageText = "Are you sure you want to delete yourself from this team? You will no longer be able to access this project if you continue.";
        headerText = "Delete Yourself?";
    }
}  
<div ng-if="!vm.loadingTeam" ui-grid="vm.TeamMembersGridOptions" ui-grid-auto-resize></div>

1 个答案:

答案 0 :(得分:0)

您正在将vm.teamMembers传递到网格。因此,vm.teamMembers数组中的每个项目在cellTemplate中都是row.entity。

尝试仅传入row.entity而不是row.entity.members。