Ich untersuche, wie man Jasmine mit Karma benutzt. Ich versuche, einen Rahmen in meinen Controller zu injizieren und von irgendwo habe ich diesen Code abgeholt ...
var scope = { message: 'hello' };
beforeEach(angular.mock.module('myApp'));
beforeEach(angular.mock.inject(function ($rootScope, $controller) {
scope = $rootScope.$new();
$controller('myController', { $scope: scope });
}));
Das Problem ist, dass der Umfang mit der Linie weggewischt wird ...
scope = $rootScope.$new();
So kann ich es auskommentieren, aber ich frage mich, wofür die Verwendung dieser Linie ist? Wann möchte ich $rootscope.$new()
anrufen? Ich verstehe, dass es mit Isolation zu tun hat, aber ich bekomme nicht wirklich die praktischen Anwendungen davon.
UPDATE: Wie Tim unten hervorhebt, ist es ein Problem, weil ich meinen eigenen Umfang erklärt habe. So kann ich den Code ändern zu sein ....
var scope;
beforeEach(angular.mock.module('myApp'));
beforeEach(angular.mock.inject(function ($rootScope, $controller) {
scope = $rootScope.$new();
scope.message = 'hello';
$controller('myController', { $scope: scope });
}));
Und das funktioniert mehr wie erwartet, aber ich frage mich immer noch, was der beste Ansatz? Was ist $rootscope.$new()
sogar für?
'Das Problem ist der Umfang mit dem line' weggewischt wird glaube, ich würde das eigentliche‚Problem‘ist, dass Sie * definiert * dein eigenes 'var scope' –
Okay, das macht jetzt Sinn, sagst du. In diesem Sinne ist das der beste Ansatz? – Exitos
Warum verwenden Sie nicht einfach Yeoman und lassen Sie es Ihre Jasmine/Karma-Konfiguration einrichten? – mortsahl