要解决AngularJS中测试指令承诺完成后HTML未重新渲染的问题,可以使用$timeout服务来延迟执行指令中的代码,以确保在承诺完成后重新渲染HTML。
以下是一个代码示例:
HTML:
JavaScript:
var app = angular.module('myApp', []);
app.controller('myController', function($scope, myService) {
$scope.data = {};
myService.getData().then(function(response) {
$scope.data = response.data;
// 使用$timeout延迟执行指令中的代码
$timeout(function() {
// 执行需要重新渲染HTML的代码
});
});
});
app.directive('myDirective', function() {
return {
restrict: 'E',
template: '{{ data }}',
link: function(scope, element, attrs) {
// 指令中的代码
}
};
});
app.service('myService', function($http) {
this.getData = function() {
return $http.get('data.json');
};
});
在上面的代码中,我们使用了$timeout服务来延迟执行指令中的代码。在承诺完成后,我们使用$timeout函数来执行需要重新渲染HTML的代码。
请注意,在使用$timeout之前,您需要在控制器中注入$timeout服务。