2014-10-07 49 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它不会被执行。正如你所看到的,我也尝试了ng-repeat中的track by,但没有结果。

有没有办法通过jQuery来做到这一点? 我的选择是再次替换并编译<tr>

任何建议或解决?

PS:这是所有的jQuery步骤,这可能是一个原因。

回答

0

挣扎后,这是我能找到的解决方案。

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

与范围仍保持角部位,并更新DOM为好。