我们的应用程序有2级导航.我们想使用AngularJS $routeProvider动态地为模板提供模板<ng-view />.我正在考虑按照以下方式做一些事情:
angular.module('myApp', []).
config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/:primaryNav/:secondaryNav', {
templateUrl: 'resources/angular/templates/nav/'+<<primaryNavHere>>+'/'+<<secondaryNavHere>>+'.html'
});
}]);
Run Code Online (Sandbox Code Playgroud)
我只是不知道如何填充内部的部分<<>>.我知道primaryNav和secondaryNav绑定到$ routeParams,但是如何在这里访问$ routeParams以动态提供模板?
我可以在AngularJS中设置路由参数的默认值吗?有没有办法拥有/products/123和/products/处理相同的路线?
我想重构我现有的代码,看起来像:
myModule.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/products/', {templateUrl: 'products.html', controller: ProductsCtrl}).
when('/products/:productId', {templateUrl: 'products.html', controller: ProductsCtrl})
}]);
function ProductsCtrl($scope, $routeParams) {
$scope.productId = typeof($routeParams.productId) == "undefined" ? 123 : $routeParams.productId;
}
Run Code Online (Sandbox Code Playgroud)
它有效,但它不是很优雅.有没有更好的办法 ?
.state('tabs.map', {
url:'/map/{location_id}',
params: {
location_id: { value: -1 }
},
views: {
'map-tab':{
templateUrl:'templates/map.html',
controller:'MapCtrl'
}
}
})
Run Code Online (Sandbox Code Playgroud)
我已经在网上找到了一些可选参数的不同选项,但它们都没有像我正在寻找的那样工作.我添加的代码允许:
但不是
我不确定为什么尾随斜线导致问题,因为从我读过它不应该是一个问题.有谁知道如何解决这个问题?
最近咨询过
将壁球引入param变量
.state('tabs.map', {
url:'/map/:location_id',
params: {
location_id: { value:null, squash:true }
},
views: {
'map-tab':{
templateUrl:'templates/map.html',
controller:'MapCtrl'
}
}
})
Run Code Online (Sandbox Code Playgroud) 由于angular angularjs路由有可选的参数值吗?
和AngularJS:使用带有可选参数的URL进行路由带有?参数名称的
问号应该使其成为可选项.它没有帮助我.
var app = angular.module('app', ['ui.router','ngRoute']);
app.config(function ($urlRouterProvider, $stateProvider) {
$urlRouterProvider.otherwise('/a');
$stateProvider.state('a', {
url: '/a',
templateUrl: 'views/a.html'
}).state('b', {
url: '/b/:code?/:d?',
templateUrl : 'views/b.html'
})
});
Run Code Online (Sandbox Code Playgroud)
这个网址http:// localhost:xx/kk /#/ b/1/2对我来说很好.但是http:// localhost:xx/kk /#/ b(没有任何参数)和http:// localhost:xx/kk /#/ b/1对我不起作用......
你可以看到我正在使用$stateProviderui-router.我不想切换到$urlRouteProvider