Шаблон строки 'grid.appScope.functionname()' не работает

У меня есть сетка пользовательского интерфейса, основанная на наведении мыши пользователя на определенную строку, мне нужно показать кнопку в ячейке этой конкретной строки. Я попытался использовать шаблон строки, в котором я буду вызывать метод, используя «grid.appScope, имя_функции ()». Но это не работает. Под нами мой код. 1.Параметры сетки:

 $scope.gridOptions = {
    headerTemplate: '/SourceHtml/Templates/HomeHeaderTemplate.html',
    rowTemplate: rowTemplate(),
    data: 'glues',
    enableRowSelection: false,
    enableCellEditOnFocus: true,
    columnDefs:
          [{ field: 'Name', displayName: 'Name', enableCellEdit: false },
          { field: 'Brand', displayName: 'Brand', enableCellEditOnFocus: true },
          { field: 'Quarter', displayName: 'Quarter', enableCellEditOnFocus: true },
          { field: 'Modified', displayName: 'Modified', enableCellEditOnFocus: true },
          { name: 'report', displayName: 'report', cellTemplate: '<button id="editBtn" type="button" class="btn-primary"><span class="glyphicon glyphicon-calendar"><span>Reports</span></span></button> ' },
          { name: 'edit', displayName: 'Edit', cellTemplate: '<button id="editBtnDdl" type="button" class="btn-primary"><span class="glyphicon glyphicon-cog"><span>Edit</span></span></button> ' }]
};

2. Данные сетки:

$scope.glues = [{ Name: 'Bob', Brand: 'CEO', Quarter: '2015 Q1', Modified: 'Alexander' },
          { Name: 'Bob', Brand: 'CEO', Quarter: '2015 Q1', Modified: 'Alexander' }];

3.Шаблон строки:

function rowTemplate() {
    return $timeout(function () {
        alert("hi");
        return '<div ng-click="grid.appScope.fnOne(row)" ng-mouseover="grid.appScope.fnOne(row)"  ng-repeat="col in colContainer.renderedColumns track by col.colDef.name" class="ui-grid-cell" ui-grid-cell></div>';
    }, 6000);
}

4.Метод, вызываемый из rowTemplate:

$scope.fnOne = function (entity) {
    alert(row);
};

Мой план состоит в том, чтобы вызвать метод fnOne() из rowTemplate и оттуда использовать ng-class="{hideByDefault:!inputs}", где отображение hideByDefault будет равным none, и установить для входных данных значение true в методе fnOne. Но метод fnOne не вызывается.

Пожалуйста, предложите любые идеи. Любые другие типы реализации также приветствуются.


person pratham gn    schedule 27.02.2015    source источник
comment
можете ли вы попробовать ответ по этой ссылке stackoverflow.com/a/28556566/4260544   -  person Divya MV    schedule 27.02.2015
comment
Почему $timeout используется в функции rowTemplate? Есть ли для этого какая-то конкретная причина?   -  person Vinay K    schedule 27.02.2015
comment
RowTemplate был вызван при загрузке контроллера, поэтому я подумал, что это может быть одной из причин того, что метод appScope не вызывается, и добавил его. Но это не влияет.   -  person pratham gn    schedule 27.02.2015
comment
@prathamgn привет, любые обновления, grid.appScope у меня не работает, я использую getExternalScopes()..   -  person Ganesh Vellanki    schedule 18.03.2015


Ответы (1)


Наконец, в нашем приложении мы решили использовать Angular Smart Table вместо сетки Angular ui. Выполняя некоторые POC, мы смогли легко достичь некоторых вещей в Smart Table, которые были сложными в сетке пользовательского интерфейса Angular.

person pratham gn    schedule 16.09.2015