从指令中没有Controller的状态访问已解决的参数

时间:2015-10-07 19:39:39

标签: angularjs angularjs-directive angular-ui-router

我正在重构我的所有代码以实现本文form_valid()中所述的顶级指令,而且我不确定如何访问我已解析的值:

$stateProvider
            .state('login', {
                url      : '/login',
                template : '<sr-login-view></sr-login-view>'
            })
            .state('main', {
                url      : '/main',
                template : '<sr-main-view></sr-main-view>',
                resolve  : {
                    directiveConfig : function (Directives) {
                        return Directives.getConfig('mainScreen');
                    }
                }
            });

指令:

angular.module('ElectronClient')
    .directive('srMainView', function (directiveConfig //doesn't work) {
        return {
            restrict    : 'E',
            require     : 'srMainScreen',
            scope       : {},
            templateUrl : 'source/app/directives/main/main_view.html',
            controller  : function ($scope, directiveConfig //doesn't work) {

                //code

            },
            link : {
                post : function (scope, element, attributes, mainViewController) {

                }
            }
        }
    });

这有什么解决方法吗?拥有“顶级”指令的重点是不在状态中定义Controller,但似乎resolve参数仅传递给附加到该状态的控制器

1 个答案:

答案 0 :(得分:1)

  

拥有“顶级”指令的重点是不在状态中定义Controller

是的,这就是重点,但为什么呢?这样你就可以利用这个:

  

当我需要一个可重用的子组件用于我的页面时,与路由无关,我总是使用不同的模式,我的应用程序变得更难以推理。

现在使用resolve会破坏这个目的,因为根据你如何调用你的指令,有些人会有directiveConfig可用于注射而有些则不会。这意味着使用不同的模式,具体取决于指令的使用方式。

为了与文章建议的内容保持一致,我想最好远离解决路线中的值并在控制器中解析它们。