2014-10-07 2 views
0

Я пытаюсь использовать ng-repeat в таблице и сортировать формы структуры дерева папок. Таким образом, когда я нажимаю определенную строку и в зависимости от конкретного значения, я обновляю значение после вызова функции через «onclick» (ng-click, похоже, не работает), список получает обновление в JavaScript, но не отражается на HTML. Кроме того, строка не отображается в HTML. Некоторая часть кода ниже:Обновление динамического списка ng-repeat

<tr id="parents" ng-repeat="dir in cachedDirectoryInfo.filesInPath track by dir.name"> 
               <td>{{dir.name}}</td> 
               <td>{{dir.permission}}</td> 
               <td>{{dir.modificationTime | date:'yyyy-MM-dd HH:mm'}}</td> 
               <td>{{dir.ownerName}}</td> 
               <td>{{dir.groupName}}</td> 
              </tr> 


<tr ng-repeat="child in directoryInfo.filesInPath track by child.name"> 
               <td> 
                <a id="mylink" datamylink="{{child.name}}" onclick="var myscope=angular.element($('#importCtrlEl')).scope(); myscope.hello(myscope.selectedPath, this)">{{child.name}} 
                </a> 
               </td> 
               <td>{{child.permission}}</td> 
               <td>{{child.modificationTime | date:'yyyy-MM-dd HH:mm'}}</td> 
               <td>{{child.ownerName}}</td> 
               <td>{{child.groupName}}</td> 
              </tr> 

В то время как в JavaScript

$scope.hello = function (path, event) { 
      Inside promise{ 
        $scope.cachedDirectoryInfo = $scope.directoryInfo; 
        $scope.directoryInfo = hdfsResp.directoryInfo; 
      } 
} 

Я прочитал некоторые решения, которые здесь говорит использовать $scope.$apply, который не работает для меня. Поскольку это дает мне ошибку «Ошибка: $ digest уже выполняется», и если я делаю $scope.$$phase || $scope.$apply, он не будет выполнен. Как вы можете видеть, я также попробовал track by в ng-repeat без результатов.

Есть ли способ сделать это через jQuery? Моим вариантом было бы заменить и скомпилировать <tr> еще раз.

Любой совет или работа вокруг?

PS: Это все внутри шагов jQuery, которые могут быть одной из причин.

ответ

0

После борьбы это было решением, которое я смог найти.

var html = "...."; 
$("#parents").html($compile(html)($scope)); 

Которая удерживает угловую часть по-прежнему с прицелом и обновляет DOM.