Html mdTab中的DOM元素未使用angular.css方法更新
我在我的表格里有进度条,在那个里我显示了在这个项目上花了多少小时。当我点击某个选项卡时,currentTab方法被触发以从数据库获取数据,在我的承诺得到解决后,我的TimeService函数也被触发以计算进度条的小时数,但当达到Html mdTab中的DOM元素未使用angular.css方法更新,html,angularjs,tabs,angular-material,Html,Angularjs,Tabs,Angular Material,我在我的表格里有进度条,在那个里我显示了在这个项目上花了多少小时。当我点击某个选项卡时,currentTab方法被触发以从数据库获取数据,在我的承诺得到解决后,我的TimeService函数也被触发以计算进度条的小时数,但当达到angular.css()时,它根本不会更新我的进度条,我不知道为什么,因为它肯定是100%工作代码。mdTabs中是否有一些功能可以防止这种情况 在下面的HTML代码中,我删除了大量内容以使其更具可读性 <md-tab label="Testing" md-on-
angular.css()
时,它根本不会更新我的进度条,我不知道为什么,因为它肯定是100%工作代码。mdTabs中是否有一些功能可以防止这种情况
在下面的HTML代码中,我删除了大量内容以使其更具可读性
<md-tab label="Testing" md-on-select="currentTab('Testing')">
<md-content class="md-padding">
<table id="projects-active" class="table table-bordered table-striped">
<thead>
<tr>
<th>Id</th>
<th>Name</th>
<th>Description</th>
<th>Estimated time</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="project in projects.Data">
<td>{{project.Id}}</td>
<td>{{project.Name}}</td>
<td>{{project.Description}}</td>
<td>
<div class="progress-group">
<div class="progress sm">
<div class="progress-bar progress-bar-success progress-bar-striped" id="progress-bar-pId-{{project.Id}}">
</div>
</div>
</div>
</td>
<td>{{project.Status}}</td>
</tr>
</tbody>
</table>
<div class="box-footer clearfix">
<ul uib-pagination total-items="totalItems"
items-per-page="maxSize"
ng-model="currentPage"
max-size="maxSize"
class="pagination-sm"
boundary-links="true"
num-pages="pages"
ng-change="setPage(currentPage, 'Testing')"></ul>
</div>
</md-content>
这是我的控制器函数,在这里我将数据提取到我的数据表中
var MAX_SIZE_PER_PAGE = 5;
$scope.currentPage = 1;
$scope.maxSize = MAX_SIZE_PER_PAGE;
$scope.pages = 0;
$scope.totalItems = 0;
$scope.setPage = function (pageNo, status) {
$scope.currentPage = pageNo;
$scope.projects = ProjectService.queryPaged({ pageSize: $scope.maxSize, pageNumber: $scope.currentPage, status: status });
$scope.projects.$promise.then(function (data) {
setTimeout(function () {
TimeService.projectProgressArray($scope.projects);
}, 0);
});
};
$scope.currentTab = function (status) {
$scope.projects = ProjectService.queryPaged({ pageSize: $scope.maxSize, pageNumber: 1, status: status });
$scope.projects.$promise.then(function (data) {
$scope.totalItems = data.TotalCount;
setTimeout(function () {
TimeService.projectProgressArray($scope.projects);
}, 0);
});
}
更新:我添加了一个图像,在该图像中,我将进度条复制到md选项卡
之外,以显示其在md选项卡
之外的工作,但不在其内部
因此,经过一段时间的研究,我发现我无法使用
Angular.element().css()
方法在Angular material
中使用css
进行操作。我必须编辑我的TimeService方法,在该方法中,我创建了一个数组,其中填充了每个项目的单个进度条的信息,并将其发送回我的控制器,然后使用ng样式
在ng材质DOM中使用我的css进行操作
projectProgressArray: function (array) {
var progressBarArray = [];
var items = array.Data;
angular.forEach(items, function (key, value) {
var progressBar = {
projectId: null,
percentage: null,
barClass: null
}
var id = key.Id;
var maxTime = key.EstimatedTime;
var currentTime = key.TimeSpend;
var percentageComplete = Math.round(((currentTime / maxTime) * PERCENTAGE) * 100) / 100;
progressBar.projectId = id;
progressBar.percentage = percentageComplete + "%";
if (!("#progress-bar-pId-" + id).length == 0) {
if (percentageComplete > 100) {
progressBar.barClass = "progress-bar-danger";
}
else {
progressBar.barClass = "progress-bar-success";
}
}
progressBarArray.push(progressBar);
});
return progressBarArray;
修改的HTML绑定
<div class="progress-group">
<div class="progress sm" ng-repeat="item in progressBars" ng-hide="item.projectId != project.Id">
<div ng-class="{'progress-bar-success': item.barClass == 'progress-bar-success',
'progress-bar-danger': item.barClass == 'progress-bar-danger' }"
class="progress-bar progress-bar-success progress-bar-striped" id="progress-bar-pId-{{project.Id}}"
ng-style="{'width':item.percentage}">
</div>
</div>
<div class="progress-group">
<div class="progress sm" ng-repeat="item in progressBars" ng-hide="item.projectId != project.Id">
<div ng-class="{'progress-bar-success': item.barClass == 'progress-bar-success',
'progress-bar-danger': item.barClass == 'progress-bar-danger' }"
class="progress-bar progress-bar-success progress-bar-striped" id="progress-bar-pId-{{project.Id}}"
ng-style="{'width':item.percentage}">
</div>
</div>