angularjs – Angular ui路由器具有路由(状态)参数的多个视图
我有一个页面,我显示两个不同的产品列表使用多个视图,每个具有控制器和模板文件.我的状态定义如下:
.state('all_lists',{ url: '/lists',views: { '' : {templateUrl: 'my-lists.html'},'featured@all_lists' : {templateUrl: 'featured.html',controller: 'featuredCtrl'},'deals@all_lists' : {templateUrl: 'deals.html',controller: 'dealsCtrl'} } } ) 每个单独的列表都有顶部的分页和排序过滤器,这些分页和排序过滤器作为状态参数添加到URL中. 如果您更好地了解如何将分页参数添加到URL中的产品列表,请分享您的想法. 谢谢 注意: 笔记2: <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> </head> <body> <div id="content"> <h1>Products Homepage</h1> <h3>Some common filters for both lists</h3> <div id="featured"> <h2>Featured List</h2> <div>pagination and other filters</div> <ul> <li>item 1</li> <li>item 2</li> <li>item 3</li> <li>item 4</li> <li>item 5</li> </ul> </div> <div id="deals"> <h2>Hot Deals List</h2> <div>pagination and other filters for hot deals</div> <ul> <li>item 1</li> <li>item 2</li> <li>item 3</li> <li>item 4</li> <li>item 5</li> </ul> </div> </div> </body> </html>
将它们视为多重视图,而不是将其视为父级抽象的子视图.看下面的代码, $stateProvider .state("product",{ url: '/product',templateUrl: "/Views/productHome.html",abstract: true,controller: "productHomeCtrl" }) .state('product.thumbnailview',{ url: '/producttv',templateUrl: "/Views/thumbnailview.html",controller: "thumbnailViewCtrl",params: { param1: null,param2: null } }) .state('product.listview',{ url: '/productlv',templateUrl: "Views/listview",controller: "listViewCtrl",param2: null } }) 现在您可以通过在相应的控制器中分别注入stateParams服务来使用参数. 注意:但如果您尝试直接到达产品状态,它将不会被激活,因为它是抽象状态 如果您在productHome.html中保留分页,您仍然可以使用$scope.$parent.productList访问productDetails数组,并重用相同的作用域变量. 所以在这种情况下,你的productHome.html将会这样 <div> <div > MENU OPTIONS </div> <div ng-view> </div> <ul uib-pagination total-items="itemLength" ng-model="currentPage" ng-change="pageChanged()"></ul> </div> 这三个对象可以在三个控制器中的任意一个处理 > itemLength 缩略图和列表视图都将包含仅用于布局目的的标记. <div> <div> Thumbnail or List markup </div> very simple you can play with bootstrap grid layout. </div 更新1 对于这样的路线 //mydomain.com/products/featured-page_1/deals-age_2/perpage??_10/ 使用我的解决方案,你可以处理这样的事情 //mydomain.com/products/featured/page_1/deals/age_2/ 所以你的孩子将会是 $stateProvider .state("product",controller: "productHomeCtrl" }) .state('product.featured/',{ url: '/featured/:number',templateUrl: "/Views/featured.html",controller: "featuredCtrl",params: { number: null,} }) .state('product.deals',{ url: '/deals/:number',templateUrl: "Views/deals.html",controller: "dealsCtrl",params: { number: null } }) 在featuresCtrl中,您可以使用这些参数访问这些参数 $stateParam.number 在DealsCtrl中,您可以使用这些参数访问这些参数 $stateParam.number 在$rootscope中或在productHomeCtrl中保留该值 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |