2016-01-05 2 views
0

Я использую smart-table с разбивкой на страницы. Также есть выбранный по умолчанию элемент (isSelected=true).Умный стол перейти к выбранному товару

Я хочу достичь того, что разбиение на страницы переходит на фактическую страницу таблицы, в которой находится выбранный элемент.

Я попытался получить $scope с разбивки на страницы, чтобы получить доступ к функции selectPage(). Но я не могу получить $ scope.

angular.element($('#pagination')).scope()

возвращает контроллер $ прицел

angular.element($('#pagination')).isolatedScope()

возвращает нулевое значение

Edit:

Вот plnkr.

Можно ли получить область действия от директивы? Я хочу, чтобы получить объем от this directive

Вот таблица HTML:

<table st-table="table" st-pipe="pipeFunction" st-safe-src="rowCollection" class="table table-striped"> 
    ... 
    <tfoot> 
     <tr> 
      <td colspan="5"> 
       <div id="pagination" st-pagination="" st-items-by-page="8" st-template="/scripts/angular/pagination.custom.html"></div> 
      </td> 
     </tr> 
    </tfoot> 
</table> 
+0

если вам нужен угловой материал один (я не знаю, что вам нужно), то попробуйте следующее: https://github.com/iamisti/mdDataTable – Iamisti

+0

@Iamisti, я всего лишь хочу заменить плагин, потому что много работает правильно – NinjaOnSafari

+0

, если бы вы могли привести пример в plunkr или codepen, который был бы замечательным:) – Iamisti

ответ

0

А я думаю, что я нашел эту проблему.

Вместо:

angular.element($('#pagination')).isolatedScope() 

Попробуйте использовать (без d):

angular.element($('#pagination')).isolateScope() 
+0

nope по-прежнему 'undefined'. Я создал [plunker] (http://plnkr.co/edit/NJDkitbfcuEQcEpUy94U?p = preview) – NinjaOnSafari

1

Так мне удалось это, а также с выбором по умолчанию.

JavaScript:

app.directive('stDefaultSelection', function() { 
    return { 
     require: 'stTable', 
     restrict: 'A', 
     scope: { 
      selection: '=stDefaultSelection', 
     }, 
     link: function link(scope, element, attrs, controller) { 

      scope.$watch('selection', function (newValue, oldValue) { 
       var selectionMode = 'single', 
        pagination = controller.tableState().pagination; 

       //controller.select(newValue, selectionMode); => causes second call of function 

       var rows = controller.getFilteredCollection(), 
        indexOfRow = rows.indexOf(newValue), 
        finalPage = Math.ceil(rows.length/pagination.number); 

       if (indexOfRow > -1) { 
        controller.slice(finalPage * pagination.number, pagination.number); 
       } 
      }); 
     } 
    }; 
}); 

HTML:

`<table st-default-selection="selectedRow" st-table="table" st-safe-src="rowCollection"></table>` 
+0

лично мне не нравится использовать префикс 'st-' для моих собственных расширений, поэтому я знаю, что если я снова его использую в другом проекте, это не что-то, что является частью табличного модуля. Но хорошее решение для создания рабочих мест – charlietfl

Смежные вопросы