angular定制组件-bootstrap(css框架)

简介: 需要的文件 bootstrap.css ui-bootstrap-tpls.js 模态框 angular定制的bootstrap的模态框,可以方便地将视图与控制器绑定。 模块的定义与模块的控制器: //定义模块时引入依赖angular .module('myApp', [ 'ui.bootstrap' ]); //定义控制器时传入依赖 angu

需要的文件

bootstrap.css
ui-bootstrap-tpls.js

模态框

angular定制的bootstrap的模态框,可以方便地将视图与控制器绑定。
模块的定义与模块的控制器:
//定义模块时引入依赖
angular
  .module('myApp', [
    'ui.bootstrap'
  ]);
  
 //定义控制器时传入依赖
 angular.module('myApp')
  .conroller('MenuCtrl', function ($scope,$modal) {

	   //打开模态框,修改某条数据
		$scope.modifyModal = function (channel) {
		  return $modal.open({
		  //模态框的样式
			templateUrl: 'views/channel/modifyChannel.html',
			size: 'lg',
			backdrop: 'static',
			//指定模态框范围内的控制器
			controller: 'ChannelAddOrModifyCtrl',
			//给模态框控制器的依赖传参
			resolve: {
			  channel: function () {
				return channel;
			  },
			  action:function(){
				  return 'modify';
			  }
			}//resolve
		  });
		};
	});

模态框的控制器:
'use strict';
angular.module('myApp')
	//注意$modalInstance为库里的,channel与action是传参过来的
  .controller('ChannelAddOrModifyCtrl', function ($scope, $modalInstance, $log,$http,toastr, PathUtil,channel,action) {
    if (action=='add') {
      var data = {
        name:"",
        displayName:"",
        description:"",
        whereStr:""
      }
      $scope.channel = data;
    } else {
      $scope.channel = channel
    }
    $log.debug('init', $scope.channel);
    $scope.ok = function () {
    	var postData= $scope.channel;
    	//增
    	if(action=='add'){
    		$http.post(PathUtil.getUrl('channel'),postData)
    		.success(function(data) { 
    			if(data=='true')
    	          toastr.success('ok');
    	      })
    	      .error(function(){toastr.error('error')}); 
    	}
    	//改
    	else{
    		$http.post(PathUtil.getUrl('channel/modify?'+postData.id),postData).success(function(data) { 
    			if(data=='true')
    	          toastr.success('ok');
    	      }).error(function(){toastr.error('error')}); 
    	}
    	 $modalInstance.close( );
    };

    $scope.cancel = function () {
      $modalInstance.dismiss('cancel');
    };
  });


模态框的视图:
<div class="modal-header">
    <h3 class="modal-title">修改</h3>
</div>
<div class="modal-body  auto-height-body">
    <form name="form" novalidate class="form-horizontal" role="form">
        <div>
            <label class="control-label"> 频道</label>
            <input name="name" placeholder="频道标识(请使用英文)" maxlength="4085" class="form-control"
                   ng-model="channel.name" ng-disabled="true" required/>
        </div>
        <div>
            <label class="control-label"> 频道中文</label>
            <input name="title"  maxlength="4085" class="form-control"
                   ng-model="channel.displayname" ng-disabled="true" required/>
        </div>
        <div>
            <label class="control-label">描述</label>
            <input name="datasourceapp" placeholder="此业务线的描述信息" maxlength="4085" class="form-control"
                   ng-model="channel.description"/>
        </div>
        <div>
            <label>频道定义</label>
            <textarea class="form-control" placeholder="在此输入业务线where条件" ng-model="channel.whereStr"></textarea>
        </div>
    </form>
</div>

<div ng-include="'views/commonEditOKCancelBar.html'"></div>
为了复用模态框的底部,所以写了单独的html:
<!-- commonEditOKCancelBar.html -->
<div class="modal-footer">
    <button class="btn btn-primary"  ng-click="ok()">保存</button>
    <button class="btn btn-warning" ng-click="cancel()">关闭</button>
</div>

显示效果:
图1 模态框的显示效果

标签集合tabset

当下拉列表中的元素太多,感觉使用不方便时,就可以用胶囊标签展开。

<tabset> 
<tab ng-repeat="channel in channelList"
	heading="{{channel.displayName}}"
	select="getCounterList(channel.name)"> 
</tab> 
</tabset>
heading:标签内容。

select: 选中这个标签的回调函数。

样式见图2.

图2  <tabset> 效果

分页 pagination

angular封装了pagination指令,在ui-bootstrap-tpls.js文件中。

分页效果见图3,还是很棒的,第1页时,Previous自动禁用,最后一页时也一样。


图 3 分页效果

html代码;

<!-- 分页 -->
<pagination total-items="pageModel.total" <!-- 元素(表中的列)总个数 -->
items-per-page="pageModel.pageSize"<!-- 每个页面展示的元素个数。angular根据这个和上个计算页数 -->
ng-model="pageModel.page"<!--数据绑定,值为1,2,3,...-->
ng-change="pageChanged(pageModel.page)"><!--点击具体页码要靠自定义的pageChanged()刷新数据-->
</pagination>

js代码:

// 分页信息
$scope.pageModel = {
	total : $scope.counterList.length,//数组长度
	pageSize : 10,
	page : 1//默认从第1页开始
};
$scope.pageChanged = function(index) {
	// index表示页码,从1起
	index--;
	var beginIndex = index * $scope.pageModel.pageSize;
	$scope.counterPageList = $scope.counterList.slice(//$scope.counterList是一次性拉取的全量
			beginIndex, beginIndex
					+ $scope.pageModel.pageSize);
};


目录
相关文章
|
21天前
|
前端开发
基于CSS3+Bootstrap实现的侧边栏后台菜单源码
CSS3+Bootstrap实现的侧边栏后台菜单特效源码是一段基于Bootstrap和图标库制作的侧边栏菜单后台管理页面效果代码,简洁大方、易于管理,是一段非常不错的后台菜单栏效果,欢迎对此段代码感兴趣的朋友前来下载。
87 54
|
2月前
|
缓存 前端开发 JavaScript
前端serverless探索之组件单独部署时,利用rxjs实现业务状态与vue-react-angular等框架的响应式状态映射
本文深入探讨了如何将RxJS与Vue、React、Angular三大前端框架进行集成,通过抽象出辅助方法`useRx`和`pushPipe`,实现跨框架的状态管理。具体介绍了各框架的响应式机制,展示了如何将RxJS的Observable对象转化为框架的响应式数据,并通过示例代码演示了使用方法。此外,还讨论了全局状态源与WebComponent的部署优化,以及一些实践中的改进点。这些方法不仅简化了异步编程,还提升了代码的可读性和可维护性。
|
2月前
|
前端开发 JavaScript
CSS样式穿透技巧:利用scoped与deep实现前端组件样式隔离与穿透
CSS样式穿透技巧:利用scoped与deep实现前端组件样式隔离与穿透
221 1
|
2月前
|
数据可视化 前端开发 搜索推荐
FLEX组件可视化设计器CSS3代码生成器
FLEX组件可视化设计器CSS3代码生成器
47 4
|
3月前
|
前端开发 JavaScript API
React、Vue.js 和 Angular前端三大框架对比与选择
前端框架是用于构建用户界面的工具和库,它提供组件化结构、数据绑定、路由管理和状态管理等功能,帮助开发者高效地创建和维护 web 应用的前端部分。常见的前端框架如 React、Vue.js 和 Angular,能够提高开发效率并促进团队协作。
145 4
|
2月前
|
数据可视化 前端开发 数据安全/隐私保护
DIY可视化快速组件CSS样式设计生成源码
DIY可视化快速组件CSS样式设计生成源码
32 0
|
2月前
|
前端开发 JavaScript
uniapp纯CSS实现圆形进度条组件
uniapp纯CSS实现圆形进度条组件
113 0
|
4月前
|
前端开发
HTML+CSS基础知识(6)背景的设置、表格的设计、表单的设计和框架集
这篇文章详细介绍了如何在HTML和CSS中设置背景、设计表格、创建表单以及使用框架集,并通过代码示例和测试结果展示了具体的实现方法和效果。
HTML+CSS基础知识(6)背景的设置、表格的设计、表单的设计和框架集
|
4月前
|
前端开发 JavaScript
|
4月前
|
Java 数据库连接 数据库
强强联手!JSF 与 Hibernate 打造高效数据访问层,让你的应用如虎添翼,性能飙升!
【8月更文挑战第31天】本文通过具体示例详细介绍了如何在 JavaServer Faces (JSF) 应用程序中集成 Hibernate,实现数据访问层的最佳实践。首先,创建一个 JSF 项目并在 Eclipse 中配置支持 JSF 的服务器版本。接着,添加 JSF 和 Hibernate 依赖,并配置数据库连接池和 Hibernate 配置文件。然后,定义实体类 `User` 和 DAO 类 `UserDAO` 处理数据库操作。
64 0