2015-10-07 16 views
0

我重构我所有的代码来实现,如本文中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) { 

       } 
      } 
     } 
    }); 

有一些解决方法呢?具有“顶级”指令的全部要点是不将控制器定义在状态中,但似乎解析参数仅传递给附属于该状态的控制器

+0

在'main'状态下添加控制器,然后将解析'directiveConfig'传递给指令隔离范围。 –

+0

我试图找到任何其他方式 –

+0

但我想我不得不诉诸于...:p –

回答

1

“顶级”指令是不定义控制器的状态

是的,这是关键,但为什么?所以,你可以利用这个:

当我需要一个可重用的子组件,我的网页没有与路线相关联,我坚持使用完全不同的模式,我的应用程序变得更难以推理关于。

现在使用resolve会破坏这一目的,因为这取决于你怎么称呼你的指令,有的则要directiveConfig可用于注入和一些不会。这意味着你根据指令的使用方式使用不同的模式。

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

相关问题