2013-04-05 11 views
8

Attualmente sto utilizzando directiveElement.data("$ngModelController") per accedere a $ngModelController dell'elemento, come nell'esempio seguente.

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 
    })); 
}); 

Tuttavia, voglio sapere se v'è una migliore per accedere al $ngModelController, o se l'accesso alla $ngModelController è una cattiva idea?

+1

Si potrebbe anche fare 'directiveElement .controller ('ngModel') '. Penso anche che ci siano legittimi motivi di test per cui vorresti avere un controllo su questo, anche se il modo più comune è quello di ottenere un handle attraverso il 'form' (ad esempio https://github.com/angular/angular. js/blob/master/test/ng/direttiva/formSpec.js). Non sei sicuro del motivo per cui stai impostando $ modelValue in questo modo. Non vuoi semplicemente impostare 'myNgModel'? – jonc

+0

@jonc Il tuo commento è la risposta che stavo cercando, puoi postarla come risposta e la contrassegnerò come risposta. – JJohnston

+0

sei riuscito a prendere in giro ngModelCtrl. $ ModelValue? – Winnemucca

risposta

Problemi correlati