当此页面加载时,以下每种方法中的$scope
都包含相同的id
值。 self.gridData
将填充,因为它应该是selectAllClicked
方法。
当我离开/返回页面时,所有$scope
ID都会重新生成,除了.selectAllClicked
方法中的那个。在.selectClickedAll
方法中,id
的{{1}}来自原始页面加载。由于console.log($scope)
加载了self.gridData
,但$scope
中调用旧的$scope
,.selectAllClicked
永远不会触发。
angular.forEach
这看起来(我相信)是与ng-table's var self = this;
$scope.selectAllClicked = function(){
console.log($scope);
angular.forEach(self.gridData, function(item) {
item.selected = self.selectAllCheckbox;
});
};
var dataSuccess = function(data){
console.log($scope);
self.gridData = data.data;
angular.forEach($scope.gridData, function (cr) {
cr.rowId = rowIdCount++;
});
self.tableParams.total(data.rowsCount);
return self.gridData;
};
var setupGrid = function(){
console.log($scope);
self.tableParams = $rootScope.gridParamsHash["recordingsList"] || new NgTableParams({count: 25 }, {
counts: [25, 50, 100],
getData: function(params) {
var filter = params.filter();
var sorting = params.sorting();
var count = params.count();
var page = params.page();
return recordingsService.getGridRecordings(page, count, filter, sorting, $scope.externalFilterParams.callType, $scope.externalFilterParams.externalDateFilters ).then(dataSuccess, dataFail);
}
}, 3600000); // This delay is a workaround to prevent the ngTable from reloading
};
function init() {
console.log($scope);
setupGrid();
}
指令相关的问题,位于下面的第一个header
元素中。它从td
加载复选框并存储在templatecache中。再次假设在这里,但似乎这会强制复选框绑定到原始范围,而不是重新渲染的范围。
headerCheckbox.html
如何强制<script type="text/ng-template" id="headerCheckbox.html">
<input type="checkbox" ng-model="vm.selectAllCheckbox" ng-change="selectAllClicked()" />
</script>
<table ng-table="vm.tableParams" class="table testTable" fixed-table-headers="scrollable-area">
<tr ng-repeat="row in $data" ng-class="{'selected':row.rowId == rowId}" ng-click="setClickedRow(row.rowId)">
<td width="40" header="'headerCheckbox.html'"><input type="checkbox" ng-model="row.selected"/></td>
<td data-title="'Username'" filter="{ username: 'text'}" width="30">{{row.username}}</td>
</tr>
</table>
将自己应用于新呈现的$scope.selectAllClicked
?