单击内部单元格模板不会触发控制器中的功能

Pas*_*cal 15 angularjs angular-ui-grid

我在这里创建了一个plunker:http://plnkr.co/edit/zGqouwzxguef13lx48iP?p = preview

当我在日视图中单击ui-grid的单元格时,没有任何反应.我所期望的是执行测试功能并显示带有文本'test'的警报,但事实并非如此.

这里出了什么问题?

这是ui-grid 3.0最新版本的html单元模板:

HTML

<div ng-click="test()" ng-switch="row.entity[row.grid.columns.indexOf(col)].isPeriod">

    <div ng-switch-when="true">
        <tabset>
            <tab>
                <tab-heading>
                    <i class="glyphicon glyphicon-book"></i>
                </tab-heading>period id:
                {{ row.entity[row.grid.columns.indexOf(col)].id}}
            </tab>
            <tab select="alertMe()">
                <tab-heading>
                    <i class="glyphicon glyphicon-bell"></i>
                </tab-heading>
                {{row.entity[row.grid.columns.indexOf(col)].content}}
            </tab>

        </tabset>      <!-- PeriodTemplate -->
    </div>
    <div ng-switch-when="false">
       <div>Hello empty template</div>
    </div>      <!-- EmptyPeriodTemplate -->
</div>
Run Code Online (Sandbox Code Playgroud)

控制器:

'use strict';
angular.module('projectplanner').controller('DateplannerDayController', function ($scope, $state) {


    var columnHeaderDates = ['col1','col2','col3','col4','col5','col6','col7']
    $scope.columns = createColumnHeaders(columnHeaderDates);

var data = [{isPeriod: true, id: 10, rowNumber: 1},{isPeriod: false, id: 11, rowNumber: 2}]

  $scope.test = function()
  {
    alert('test');
  };

    $scope.gridOptions = {
        rowHeight: 200,
        data: data,
        enableSorting: false,
        enableColumnMenu: false,
        columnDefs: $scope.columns,
        onRegisterApi: function (gridApi) {
            $scope.gridApi = gridApi;
            $scope.gridApi.core.addRowHeaderColumn(
                { name: 'rowHeaderCol',
                    displayName: '',
                    width: 100,
                    cellTemplate: '<div>row header template</div>'
                });
        }
    };

    function createColumnHeaders(columnHeaders) {
        var columnDefinitions = [];
        for (var i = 0; i < columnHeaders.length; i++) {
            var column = {
                name: columnHeaders[i],
                cellTemplate: 'lessonplanner.day.celltemplate.html',
                field: i + 'x'
            }
            columnDefinitions.push(column);
        }
        return columnDefinitions;
    }
});
Run Code Online (Sandbox Code Playgroud)

Fas*_*ler 13

这个页面在我的搜索中不断涌现,我在评论中设法错过了解决方案.总而言之,您可能需要使用externalScopes.请参阅单元头中未发射的角度ui-grid事件http://ui-grid.info/docs/#/tutorial/305_appScope

  • /sf/ask/1863511891/#26628361中接受的答案不再有效,请参阅Marcus的答案,它是ng-click =“ grid.appScope.myfunction()”或ng-click =“ grid.appScope.myfunction(row.entity.cellfield)” (2认同)

Shy*_*mar 5

如果您使用Controller-As语法,请尝试:

ng-click= "grid.appScope.<controllerAliasName>.myFunction(row)"
Run Code Online (Sandbox Code Playgroud)