我正在尝试在表格中使用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步骤中,这可能是一个原因。
答案 0 :(得分:0)
经过努力,这是我能找到的解决方案。
var html = "....";
$("#parents").html($compile(html)($scope));
保持角度部分仍然具有范围并更新DOM。