angular.module('mainApp').
controller('dynamicRouteController', ['$scope', '$controller', '$routeParams', function($scope, $controller, $routeParams) {
if(/^\d+$/.test($routeParams.pageOrName)) {
$scope.controller = $controller('thisController', { $scope: $scope }).constructor;
$scope.templateUrl = '/www/thisPage';
} else {
$scope.controller = $controller('thatController', { $scope: $scope }).constructor;
$scope.templateUrl = '/www/thatPage';
}
}]);
to minifies do:
"use strict";
angular.module("mainApp").
controller("dynamicRouteController",["$scope","$controller","$routeParams",function(a,b,c){
/^\d+$/.test(c.pageOrName)?
(a.controller=b("thisController",{$scope:a}).constructor,a.templateUrl="/www/thisPage"):
(a.controller=b("thatController",{$scope:a}).constructor,a.templateUrl="/www/thatPage")
}])
to problemy minifying, myślę, że ze względu na {$ zakresu: $ zakres} zostać zmieniona. .. Po raz pierwszy wpadłem na to/skorzystałem z tej metody. Ktoś wie lepszy sposób, aby to napisać, aby poprawnie funkcjonować?
EDYTOWANIE: więc, co się dzieje, jest to, że przechodzi {$ zakres: a}, który jest w porządku, ale na tym kontrolerem, do którego się odwołuje, gdy jego minifikacja, że $ zakres stał się a lub b lub e, w zależności ... więc jeśli napiszę kod "wstępnie minifikowany", co oznacza, że dosłownie znajduję, co litera reprezentuje $ scope w innym kontrolerze, mogę ją uruchomić, ale to jest takie hacky! Znowu jakieś pomysły?
Używanie Grunta do zminimalizowania Angular 1.0.5 ... może naprawiony w późniejszych wersjach?
2nd EDIT: Przyzwoitą odpowiedzią jest wrzucenie obu kontrolerów do tego samego pliku, jawnie ... co jest brzydkie ... ale działa! więc w jednym kontrolerze deklaruję 2 subkontrolery, które są lame. Jeśli znasz inny sposób, podziel się z innymi!
Po prostu zgaduje się tutaj, ale '{" $ scope ": $ scope}'? – Phil
Dobra rozmowa Phil, próbowałem tego bezskutecznie, chociaż :( – mclenithan
Istnieje komentarz do kontrolera ['$ controller'] (http://docs.angularjs.org/api/ng.$controller), który ma' { $ scope: {}} '. Give that a try – Phil