Tôi đang cố gắng kiểm tra ng-if trong một trong các mẫu của tôi bằng cách biên dịch khung nhìn dựa vào phạm vi được xác định trước và chạy phạm vi $. $ Digest.
Tôi nhận thấy rằng mẫu đã biên dịch sắp xuất hiện bất kể điều kiện của tôi có đúng hay sai. Tôi mong đợi các biên dịch html loại bỏ các yếu tố ng-nếu dom khi falsy.
beforeEach(module('templates'));
beforeEach(inject(function($injector, $rootScope){
$compile = $injector.get('$compile');
$templateCache = $injector.get('$templateCache');
$scope = $rootScope.$new();
template = angular.element($templateCache.get('myTemplate.tpl.html'));
}));
afterEach(function(){
$templateCache.removeAll();
});
it ('my test', function(){
$scope.myCondition = true;
$compile(template)($scope);
$scope.$digest();
expect(template.text()).toContain("my dom text");
// true and false conditions both have the same effect
});
Dưới đây là một plunkr cố gắng để hiển thị những gì đang xảy ra (không chắc chắn làm thế nào để kiểm tra trong plunkr, vì vậy tôi đã thực hiện nó trong một bộ điều khiển) http://plnkr.co/edit/Kjg8ZRzKtIlhwDWgB01R?p=preview
wow, câu trả lời tốt đẹp. Đó là hành vi thực sự kỳ lạ, tôi nghĩ rằng tôi sẽ nâng nó lên github – Dan
@dskh Bạn có thể chuyển cho tôi liên kết tới vấn đề github không? – Vincent
@Vincent https://github.com/angular/angular.js/issues/7422#issuecomment-47896751 – Dan