动态列表更新ng-repeat

时间:2014-10-07 17:34:31

标签: jquery angularjs angularjs-ng-repeat

我正在尝试在表格中使用ng-repeat,并形成文件夹树结构。因此,当我单击特定行并依赖于特定值时,我通过" onclick"调用该函数后更新该值。 (ng-click似乎没有工作)列表在JavaScript中更新但不反映在HTML上。此外,该行甚至不显示在HTML中。 代码的某些部分如下:

<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,这对我不起作用。因为它给了我错误&#34;错误:$ digest已在进行中&#34;如果我做$scope.$$phase || $scope.$apply它就不会被执行。正如您所看到的,我还尝试了ng-repeat中的track by而没有结果。

有没有办法通过jQuery实现? 我的选择是再次替换和编译<tr>

任何建议或解决方法?

PS:这一切都在jQuery步骤中,这可能是一个原因。

1 个答案:

答案 0 :(得分:0)

经过努力,这是我能找到的解决方案。

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

保持角度部分仍然具有范围并更新DOM。