0

我有下一条路线配置:

    .config(["$routeProvider", function ($routeProvider) {
        $routeProvider
            .when('/something/:id', angularAMD.route({
                templateUrl  : function ($routeParams) {
                    return "views/something/" + $routeParams.id + ".html";
                },
                controllerUrl: function ($routeParams) {
                    return "controllers/something/" + $routeParams.id + "/main";
                }
            }))

似乎 angularAMD 不支持 controllerUrl 作为函数,因此我无法动态定义控制器。

问题是我如何为不同的 url 加载不同的控制器,mb 我错过了什么或者有另一种解决方法?

4

1 回答 1

2

你可以试试下面这样的东西。它取自本网站(http://www.codeproject.com/Articles/808213/Developing-a-Large-Scale-Application-with-a-Single

 $routeProvider.when("/something/:id", angularAMD.route({
                templateUrl: function (rp) { return 'views/' + rp.section + '/' + rp.tree + '.html'; },

                resolve: {

                    load: ['$q', '$rootScope', '$location', function ($q, $rootScope, $location) {

                        var path = $location.path();
                        var parsePath = path.split("/");
                        var parentPath = parsePath[1];
                        var controllerName = parsePath[2];

                        var loadController = "Views/" + parentPath + "/" + controllerName + "Controller";

                        var deferred = $q.defer();
                        require([loadController], function () {
                            $rootScope.$apply(function () {
                                deferred.resolve();
                            });
                        });
                        return deferred.promise;
                    }]
                }

            }))
于 2014-11-18T13:05:59.290 回答