【问题标题】:Access Resolved parameters from a state without Controller inside a directive从指令内没有控制器的状态访问已解析的参数
【发布时间】:2015-10-07 19:39:39
【问题描述】:

我正在重构我的所有代码以实现本文Scaling Angular Apps 中所述的顶级指令,但我不确定如何访问我解析的值:

$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) {

                }
            }
        }
    });

有解决办法吗?拥有“顶级”指令的全部意义在于不在状态中定义控制器,但似乎解析参数仅传递给附加到该状态的控制器

【问题讨论】:

  • main 状态下添加控制器,然后将解析directiveConfig 传递给指令隔离范围。
  • 我试图找到任何其他方式
  • 但我想我不得不求助于那个......:p
  • Directives.getConfig 是什么样的?
  • 什么意思?它返回一个承诺。如果解析:解析的数据是一个json objetc

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


【解决方案1】:

拥有“顶级”指令的全部意义在于不在状态中定义控制器

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

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

现在使用resolve 会破坏该目的,因为根据您调用指令的方式,有些将有directiveConfig 可用于注入,而有些则不会。这意味着您根据指令的使用方式使用不同的模式。

为了与那篇文章的建议保持一致,我想最好不要在路由中解析值并在控制器中解析它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    • 2016-06-14
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    相关资源
    最近更新 更多