2015-10-07 19 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可用於注入和一些不會。這意味着你根據指令的使用方式使用不同的模式。

爲了保持與該文的建議一致,我想最好遠離解析路徑中的值並在控制器中解析它們。

相關問題