2015-06-25 42 views

回答

1

您可以在您的指令聲明中調用$routeParams,以在template函數中使用它。

myApp.directive('galleryMenu', ['$routeParams', function($routeParams) { 
    return { 
     template: function() { 
      var page = $routeParams.page || 'homePage', // Define a fallback, if $routeParams doesn't have 'page' param 
       output; 

      switch (page) { 
       case "servicePage": 
        output = "<button>One Button</button><button>Two Button</button>"; 
        break; 

       default: 
       case "homePage": 
        output = "<button>One Button</button>"; 
        /* 
        NOTE: Or this other, it was confusing to tell which one to use 
        output = "<button>One Button</button><button>Two Button</button><button>Three Button</button>"; 
        */ 
        break; 
      } 

      return output; 
     }, 
     link: function(scope, element, attrs) { 
      /* ... */ 
     } 
    } 
}]); 

編輯1:

如果您正在使用從$routeParamsui-router開關$stateParams

0

您需要從$ state.current獲取當前url,並且可以在templateProvider的幫助下傳遞給指令。

myApp.directive('galleryMenu', function() { 

    return { 

    templateProvider : getTemplate(template), //$scope.template need to pass 

    link : function (scope, element, attrs) { 

     console.log(scope.template); 

    } 

    } 

from getTemplate你可以返回$ state.current。希望它能幫助你。

+0

您可以請更新演示。我在模板方法中沒有定義'$ current'。 – user2024080

+0

您是使用angular-ui路由器還是簡單的路由提供商 – ngLover

+0

簡單的路由提供商,但我使用'$ route' - 在某些控制器上,它可以使用 – user2024080

相關問題