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';
}
}]);
это minifies к:
"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")
}])
Это возникают проблемы Минимизация, я думаю, что его из-за {$ охвата: $ сфера} изменяются. .. В первый раз я столкнулся с этим/использовал этот метод. Кто-нибудь знает лучший способ написать это, чтобы он правильно менял?
EDIT: так что происходит, это то, что он пропускает {$ scope: a}, что хорошо, но на этом ссылочном контроллере, когда его минимизировано, этот $ scope стал a или b или e в зависимости ... поэтому, если я напишу код «pre-minimified», то есть я буквально нахожу, какая буква представляет $ scope в другом контроллере, я могу заставить его работать, но это так взломано! Опять же, какие-то идеи?
Использование Grunt для минимизации Угловая версия 1.0.5 ... может быть исправлена в более поздних версиях?
2nd EDIT: Порядочный ответ - это бросить оба контроллера в один и тот же файл, явно ... который уродливый ... но он работает! поэтому с одним контроллером я объявляю 2 подконтрольных контроллера, что является хромым. Если вы знаете другой способ, пожалуйста, поделитесь с классом!
Просто принимайте дикие предположения здесь, но '{" $ scope ": $ scope}'? – Phil
хороший звонок Фил, я пробовал это безрезультатно, хотя :( – mclenithan
Есть комментарий к ['$ controller'] (http://docs.angularjs.org/api/ng.$controller) doco, который имеет' { $ scope: {}} '. Дайте это попробовать – Phil