首页 / HTML / 关于tab的切换之共用html页面
关于tab的切换之共用html页面
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了关于tab的切换之共用html页面,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4906字,纯文字阅读大概需要8分钟。
内容图文
在一个项目中的同一个模块中,有多个tab(并且多个tab对应的页面结构完全一样),tab的每次切换,不同tab调用不同的接口,利用一个switch进行判断,根据当前的类型去调用不同的接口,返回不同数据了,实现页面数据的刷新,
这样做的目的是为了减少html页面的重复,实现代码的复用...........................
(存在的问题,每次的页面刷新,只是数据的刷新,url没有进行更新,这会导致一个问题,那就是点击浏览器刷新页面的时候,不能记录当前的状态,每次都会返回到最初的页面,而不能记录当前的位置)
存在弊端的代码展示:
html:每次的tab切换,都会调用get_list()方法,这个方法会传递一个类型过去用于做判断
< ul class ="list-inline" > < li class ="hand" ng-click ="get_list(‘裁判文书‘)" > < button class ="btn my-tra-btn" ng-class ="{‘my-nav-active‘:position_type==‘裁判文书‘}" >裁判文书</button></li><li class="hand" ng-click="get_list(‘行业会议‘)"><button class="btn my-tra-btn" ng-class="{‘my-nav-active‘:position_type==‘行业会议‘}">行业会议</button></li><li class="hand" ui-sref="laoli_video({type:‘老李说知产‘})"><button class="btn my-tra-btn" ng-class="{‘my-nav-active‘:position_type==‘老李说知产‘}">老李说知产</button></li><li class="hand" ng-click="get_list(‘人才报告‘)"><button class="btn my-tra-btn" ng-class="{‘my-nav-active‘:position_type==‘人才报告‘}"> 人才报告</button></li><li class="hand" ng-click="get_list(‘资讯‘)"><button class="btn my-tra-btn" ng-class="{‘my-nav-active‘:position_type==‘资讯‘}">资讯</button></li></ul>
js:ctrl/consult.js文件(利用angular-require的方法将多个小控制器放入一个文件中)
define([‘app‘, ‘services/filter‘, ‘services/setting‘, ‘api/news_api‘, ‘services/common‘, ‘directives/showimg/showimg‘, ‘directives/sharecomponent/sharecomponent‘], function (myapp) {
myapp.controller(‘news_list‘, [‘$scope‘, ‘$state‘, ‘$stateParams‘, ‘news_api‘, function (s, $state, $stateParams,news_api){
//获得列表数据
s.get_list = function (typename) {//typename:用于标识tab的切换
s.mypagers.bigCurrentPage = 1;//当前页归 "1"
typename = typename; get_list_by_type(typename, s.mypagers.bigCurrentPage); } s.get_list(s.position_type); function get_list_by_type(typename, n) { switch (typename) { case "裁判文书" : { s.hand_data.pPageIndex = n;//没测切换都要更新当前的页码 news_api.get_judge_document_list(s.hand_data) .success(function (data) { ...........// }) .error(function (data) { console.log(data); }); } ; break; case "行业会议" : { s.position_type = "行业会议"; s.current_nav = "行业会议"; news_api.get_file_meeting_list({pageIndex: n, pageSize: 10}) .success(function (data) { .................// }) .error(function (data) { console.log(data); }); } ; break; case "人才报告" : { s.position_type = "人才报告"; s.current_nav = "人才报告"; news_api.get_human_resource_report_list({pageIndex: n, pageSize: 10}).success(function (data) { .................// }).error(function (data) { console.log(data); }); } ; break; case "资讯" : { s.position_type = "资讯"; s.current_nav = "资讯"; news_api.gethotnews({pageIndex: n, pageSize: 10}) .success(function (data) { .................// }) .error(); } ; break; } }
myapp.controller(‘news_detaile‘, [‘$scope‘, ‘$stateParams‘, ‘$sce‘, ‘setting‘, ‘news_api‘, ‘$rootScope‘,
function (s, $stateParams, $sce, setting, news_api, $rootScope) {
}]
});
路由配置:
router.js中: // 行业会议,咨询,人才报告 define([‘app‘, ‘env‘, ‘router/news‘, ‘ctrl/rootctrl‘, ‘router/about‘, ‘router/badComment‘, ‘router/collect_doc‘, ‘router/consult‘ ], function (myapp, env) { $stateProvider.state(‘consult‘, { url: ‘/‘, views: { "main": { templateUrl: ‘tpls/news/news.html‘, resolve: { deps: $requireProvider.requireJS([//使用angular.require ‘ctrl/consult‘ ]) }, controller: ‘news_index_ctrl‘ } } }); router/consult.js中: define([‘app‘], function (myapp) { myapp.config([‘$stateProvider‘, ‘$urlRouterProvider‘, ‘$locationProvider‘, ‘$requireProvider‘, function ($stateProvider, $urlRouterProvider, $locationProvider, $requireProvider) { $stateProvider.state(‘consult.news_list‘, { url: ‘news_list/:typename.html‘, views: { ‘content‘: { templateUrl: ‘tpls/news/content/news_list.html‘,//所有的tab,模块都共用一个news_list页面 controller:‘news_list‘ }, ‘c_right‘:{ templateUrl:‘tpls/news/c_right/c_right.html‘, controller:‘news_ctrl‘ } } }) .state(‘consult.news_detaile‘, { url: ‘:itemsid.html‘, views: { ‘content‘: { templateUrl: ‘tpls/news/content/news_detaile.html‘,//所有的tab都共用一个详情页面news_detail.html controller: ‘news_detaile‘ }, "c_footer": { templateUrl: ‘tpls/news/c_footer/c_footer.html‘, controller:‘c_footer‘ }, ‘c_right‘:{ templateUrl:‘tpls/news/c_right/c_right.html‘, controller:‘news_ctrl‘ } } }) }]) });
对于上面存在的问题不同人可能会有不同的解决方法。
常见的一种:
1:页面的拆分,将每个tab都单独作为一个模块,分别建立各自的控制器
(弊端:没有实现html页面的公用,这是抛弃了问题,抛弃了利益的做法)
2:第二种就是,可以想办法每次在进行tab切换的时候,都会进行页面的刷新,url让其发生改变,便于浏览器记录。
在原来的基础上,我们只需要简单的改变就可以:
// 获得列表数据 s.get_list = function (typename) {//typename:用于标识tab的切换// s.mypagers.bigCurrentPage = 1;//当前页归 "1"//typename = typename;//get_list_by_type(typename, s.mypagers.bigCurrentPage);//get_list_by_type(typename); $state.go("consult.news_list",{typename:typename});//这是为了刷新页面 } var get_list_data=function(typename, n){ get_list_by_type(typename, n); } get_list_data(s.position_type,s.mypagers.bigCurrentPage);
此后的每次点击tab,都会刷新页面,更新url
原文:http://www.cnblogs.com/evaling/p/6801640.html
内容总结
以上是互联网集市为您收集整理的关于tab的切换之共用html页面全部内容,希望文章能够帮你解决关于tab的切换之共用html页面所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。