$broadcast добавляет динамические данные (строки) в неправильное место с помощью ng-scrollbar

Я использовал ng-scrollbar следующим образом:

<tbody ng-scrollbar  rebuild-on="rebuild:me" class="scrollme" id ="tempID">

а в ng table включили трансляцию

getData: функция ($ отложить, параметры) {

        $scope.$broadcast('rebuild:me');

Теперь ng-repeat заполняет tr в thead после первого th вместо того, чтобы правильно добавлять/загружать его в tbody

как правильно отображать мои результаты?


person user2067736    schedule 09.10.2014    source источник
comment
Я думаю, полоса прокрутки не будет работать на столе, но div   -  person Mody    schedule 09.10.2014
comment
нет, это работает и с таблицей. Я пытался использовать как статические, так и динамические данные... проблема в $broadcast, который не перезагружает динамические данные и не делегирует их в правильном порядке, как это должно быть.   -  person user2067736    schedule 09.10.2014
comment
кто-нибудь там .. angularJs ребята ... !!!   -  person user2067736    schedule 09.10.2014


Ответы (1)


ты пробовал это

getData: function($defer, params) {
      $defer.promise.then(function(){
        $scope.$broadcast('rebuild:me');
};
...

сразу после обновления таблицы

Изменить 1

tbody заменяется на div и, таким образом, макет стал беспорядочным, проверьте plunk

Редактировать 2

Здесь обходной путь, нужно немного отредактировать, я обновлю позже


Редактировать 3 (последний)

Наконец-то заработайте пример ngtable и ngscrollbar вместе, но это не самое красивое решение, но все же:

1.

вам нужно отделить thead от остальной части таблицы в новую таблицу, которая находится прямо над основной таблицей

<thead>
    <tr >
    <th  class="sortable" ng-class="{
                    'nameasc':'sort-asc' ,
                    'namedesc':'sort-desc'
                    }[sortTableParam]"
                    ng-click="SortBy('name')">
                    <div>name</div>
                </th>
                <th class="text-center sortable" ng-class="{
                    'ageasc':'sort-asc' ,
                    'agedesc':'sort-desc' 
                   }[sortTableParam]"
                    ng-click="SortBy('age')">
                    <div>Age</div>
                </th>
    </tr>
    </thead>
    </table>

2.

второй - скрыть thead в основной таблице и обернуть таблицу в тег div, который будет обрабатываться директивой:

<div style="height:300px"  ng-scrollbar  rebuild-on="rebuild:me"  class="scrollme">
      <table  ng-table="tableParams" show-filter="true" class="table">
      <thead><tr><th ></th><th ></th></tr></thead>
        <tbody >
          <tr ng-repeat="user in $data">
            <td data-title="'Name'" filter="{ 'name': 'text' }" sortable="name">
                    {{user.name}}

                </td>
            <td data-title="'Age'" sortable="age">
                    {{user.age}}
                </td>
          </tr>
        </tbody>
      </table>
   </div>

3.

Щелчки из заголовка вызовут повторную загрузку данных с опцией сортировки путем привязки функции SortBy

 var sorting = $scope.tableParams.$params.sorting;
          var dir = sorting != null ? (sorting[param.toString()] == 'asc' ? 'desc' : 'asc') : 'asc';
          var sort={};
          sort[param.toString()]=dir;

          $scope.tableParams.sorting(sort);
          //edit classes in header for rows imaging(check plunk)
          updatesorting(param);
        };
person Kostia Mololkin    schedule 09.10.2014
comment
позвольте мне настроить plunk немного позже, чтобы узнать, что происходит - person Kostia Mololkin; 10.10.2014
comment
plnkr.co/edit/8VFlqs0p40HH75wQiYGV?p=preview я не знаю, как сделать это правильно, за исключением директивы перекомпиляции, как здесь stackoverflow.com/a/19129131/4104866, tbody заменяется на div и, таким образом, весь макет становится беспорядком - person Kostia Mololkin; 10.10.2014
comment
если вы не хотите копаться в директиве, вам лучше использовать другую директиву таблицы, например angular-ui.github. io/ng-grid какой шаблон по умолчанию для таблицы основан на divs - person Kostia Mololkin; 10.10.2014
comment
это ошибка, которая может быть вызвана ... принудительным div внутри таблицы - person user2067736; 16.10.2014
comment
Вы имеете в виду, что при применении директивы необходимо проверять, какой целевой элемент? - person Kostia Mololkin; 16.10.2014
comment
да, потому что прокрутка может быть и для таблицы, и для списка - person user2067736; 17.10.2014