Próbuję przetestować ng-if w jednym z moich szablonów, kompilując widok przeciwko predefiniowanemu zakresowi i uruchamiając $ scope. $ Digest.
Zauważyłem, że skompilowany szablon wychodzi tak samo, niezależnie od tego, czy mój stan jest zgodny z prawdą, czy nie. Spodziewam się, że skompilowany html usunie elementy ng-if dom, gdy są fałszywe.
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
});
Oto plunkr próbuje pokazać, co się dzieje (nie wiem, jak testować w plunkr, więc zrobiłem to w kontrolerze) http://plnkr.co/edit/Kjg8ZRzKtIlhwDWgB01R?p=preview
wow, miłą odpowiedź. To naprawdę dziwne zachowanie, myślę, że podniosę to na github – Dan
@dskh Czy możesz podać mi link do wydania github? – Vincent
@Vincent https://github.com/angular/angular.js/issues/7422#issuecomment-47896751 – Dan