2013-04-05 5 views
8

Aktualnie używam directiveElement.data("$ngModelController"), aby uzyskać dostęp do elementu elementu $ngModelController, jak w poniższym przykładzie.

describe("directiveElement", function() { 
    it("should do something with ngModelController", inject(function($compile, $rootScope) { 
    var directiveElement = $compile("<input ng-model="myNgModel" customDirective type="text"></input>")($rootScope); 
    $rootScope.$digest(); 
    var ngModelCtrl = directiveElement.data("$ngModelController"); 
    ngModelCtrl.$modelValue = "12345"; 
    // do rest of test 
    })); 
}); 

Jednakże chcę wiedzieć, czy istnieje lepszy dostęp do $ngModelController, czy dostępu do $ngModelController jest złym pomysłem?

+1

Można również zrobić 'directiveElement .controller ('ngModel') '. Z pewnością myślę, że istnieją uzasadnione powody testowania, dlaczego chciałbyś sobie z tym poradzić, chociaż najczęstszym sposobem jest opanowanie go poprzez "formularz" (np. Https://github.com/wymiarowy/wymiarowy. js/blob/master/test/ng/directive/formSpec.js). Nie wiesz, dlaczego ustawiasz wartość $ modelValue w ten sposób. Czy nie chcesz po prostu ustawić 'myNgModel'? – jonc

+0

@jonc Twój komentarz jest odpowiedzią, której szukałem, czy możesz ją opublikować jako odpowiedź i oznaczyć ją jako odpowiedź. – JJohnston

+0

byłeś w stanie wykpić ngModelCtrl. $ ModelValue? – Winnemucca

Odpowiedz