2015-06-25 49 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

相关问题