我有以下问题:
我有一些表格可以使用angular和ng-repeat自动生成:
<article id="search-performance-table" class="container-fluid istable">
<div class="printOptionElements printshow newpage size100"></div>
<!-- Start Table Simple-->
<section class="row">
<div class="col-md-12">
<div class="table-responsive" ng-controller="SmartTableController">
<table id="table-performance-suche" class="table table-hover" st-table="displayed" st-safe-src="tablePerformanceSearch">
<thead>
<tr class="active">
[... Header Elements ...]
</tr>
</thead>
<tbody>
<tr ng-repeat="element in displayed">
<td>{{element.date| date}}</td>
<td>{{element.requests| number:0}}</td>
<td>{{element.clicks| number:0}}</td>
<td>{{element.clickRate| percentage:2}}</td>
<td>{{element.carts| number:0}}</td>
<td>{{element.buys| number:0}}</td>
<td>{{element.conversionRate| percentage:2}}</td>
<td>{{element.responseTime| number:2}} ms</td>
</tr>
</tbody>
<tfoot class="font-blue-grey-light" ng-model="tablePerformanceSearchTotal">
<tr class="active">
[... Footer Elements ...]
<tr>
<td colspan="12" class="text-center">
<div st-pagination="" st-items-by-page="$root.itemsByPage1_table1" st-displayed-pages="7"></div>
</td>
</tr>
</tfoot>
</table>
</div>
</div>
</section>
<!-- Ende Table Simple -->
</article>
现在我想在这张桌子上制作一个printview。为此我复制了article元素,将它放在一个数组中并将其附加到属于的纸上。例如,我想要第3页上的表格,我将其复制并粘贴到元素$("#site1")
上。
pageElements[pageNumber][elementOnPage] = "<div id='"+this.parentNode.id+"' class='thisIs100 printPaper'>"+$("#"+this.parentNode.id).html()+"</div>";
for (j=0; j < pageElements.length; j++) {
for (i=0; i < pageElements[j].length; i++) {
$("#site"+j).append(""+pageElements[j][i]+"");
}
}
现在我的论文中包含了内容。旧元素被隐藏。但是角度不起作用,因为它不在$范围内。我将元素编译到范围中。
$( ".printOptionElements" ).each(function( index ) {
var parentid = this.parentNode.id;
$compile($("#"+parentid).children().not(".printOptionElements"))($scope);
$scope.$apply();
});
这适用于页脚中的简单角度变量,但ng-repeat不起作用。我只得到:
<tbody>
<!-- ngRepeat: element in displayed -->
</tbody>
有没有办法解决这个问题?编译元素后,我尝试使用$scope.$digest()
或$apply()
。但它不起作用。
我希望有人可以帮助我。
答案 0 :(得分:0)
我认为在使用JQuery和Angular试用时必须用JQuery替换$:
pageElements[pageNumber][elementOnPage] = "<div id='"+this.parentNode.id+"' class='thisIs100 printPaper'>"+jQuery("#"+this.parentNode.id).html()+"</div>";
for (j=0; j < pageElements.length; j++) {
for (i=0; i < pageElements[j].length; i++) {
jQuery("#site"+j).append(""+pageElements[j][i]+"");
}
}
并且:
jQuery( ".printOptionElements" ).each(function( index ) {
var parentid = this.parentNode.id;
$compile(jQuery("#"+parentid).children().not(".printOptionElements"))($scope);
if(!$scope.$$phase){
$scope.$apply();
}
});
先尝试一下,让我知道它是否更好? :)
在控制台中你能看到什么? $ scope变量的部分在控制器中?