2015-04-03 12 views
10

Bez wchodzenia w szczegóły, dlaczego, muszę podać alias dla $scope w moich kontrolerów. Zamiast wstrzykiwania i dekorowania $scope chciałbym, aby użytkownicy mogli zamiast tego wstrzykiwać view i mieć taki sam efekt.

W oparciu o moje rozumienie kątowe, $scope jest tworzone przez $scopeProvider, które jest fabrycznie zarejestrowane w czasie konfiguracji aplikacji kątowej. Zakładam, że muszę zarejestrować viewProvider i ustawić go równy $scopeProvider, ale nie miałem szczęścia z tym, co próbowałem. Jakieś pomysły?

FYI: Nie szukam czegoś takiego jak ['$scope', function(view){..., idealne rozwiązanie będzie działać z ['view', function(view){.... Obiekt widoku będzie działać dokładnie jak $scope, dwóch sposób wiązania itp

+1

Używając tego aliasu chcesz mieć takie same rzeczy jak dwukierunkowe wiązanie, jak robi to $ scope? – Samir

+0

Tak. Chcę uzyskać ten sam efekt, co "var view = $ scope" – Arbiter

+0

Rozwiń z powodu, dla którego chcesz kpić z usługi pasywnej. Rozumiem szyderczy jestem aktywną usługą, taką jak http, który dociera poza twoją piaskownicę. Ale usługa zakresu jest tylko pojemnikiem na to, co przechowujesz w niej i powinna być używana w taki sam sposób w testach jednostkowych jak w produkcji. –

Odpowiedz

0

Udało mi się go rozwiązać w sekcji konfiguracji mojej aplikacji. W moich kontrolerach mogę teraz używać $scope lub view i będą one miały to samo znaczenie.

$routeProvider 
    .when('/Index', { 
     templateUrl: "/views/index.html", 
     controller: ['$scope', '$controller', function($scope, $controller){ 
      $controller("IndexController", {$scope:$scope, view: $scope}); 
     }] 
    }) 
+0

ale nareszcie wstawiasz '$ scope' wewnątrz twojego obiektu' view' –

+0

Wstrzykuję też $ scope, więc możesz użyć albo "$ scope", albo "view", aby odwołać się do obiektu scope. Dokładnie to chciałem zrobić, moja prawdziwa definicja kontrolera używa "widoku" zamiast "$ scope" i oznacza to samo. – Arbiter

+0

to twoje pytanie pyta o coś, a chcesz coś innego –

2

Nie ma czegoś takiego jak $scopeProvider, zakresy są tworzone przy użyciu metody $new, każdy zakres ma dostęp do tej metody w drodze dziedziczenia (delegacja bądź precyzyjny). Kiedy pytasz o $scope w kontrolerze, $scope jest tworzony dynamicznie przy użyciu metody rodzica $scope$new i wstrzykiwany pod tą nazwą. Aby wywołać powyższe zachowanie dla innej nazwy, musiałbyś grać z wewnętrznymi kątami.

+0

Dzięki, jakikolwiek pomysł, jak to się stanie? – Arbiter

Powiązane problemy