<!DOCTYPE html>
<html ng-app="APP">

  <head>
    <link data-require="bootstrap@3.3.5" data-semver="3.3.5" rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" />
    <link data-require="bootstrap@3.3.5" data-semver="3.3.5" rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootswatch/3.3.5/cosmo/bootstrap.min.css" />
    <link data-require="bootstrap@3.3.5" data-semver="3.3.5" rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" />
    <link data-require="ui-grid@3.0.7" data-semver="3.0.7" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-grid/3.0.7/ui-grid.css" />
    <script data-require="jquery@2.1.4" data-semver="2.1.4" src="https://code.jquery.com/jquery-2.1.4.js"></script>
    <script data-require="bootstrap@3.3.5" data-semver="3.3.5" src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
    <script data-require="angularjs@1.4" data-semver="1.4.8" src="https://code.angularjs.org/1.4.8/angular.js"></script>
    <script data-require="angular-animate@1.4.3" data-semver="1.4.8" src="https://code.angularjs.org/1.4.8/angular-animate.js"></script>
    <script data-require="ui-grid@3.0.7" data-semver="3.0.7" src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-grid/3.0.7/ui-grid.js"></script>
    <script data-require="angularstrap@2.1.2" data-semver="2.1.2" src="//cdnjs.cloudflare.com/ajax/libs/angular-strap/2.1.2/angular-strap.min.js"></script>
    <script data-require="angularstrap@2.1.2" data-semver="2.1.2" src="//cdnjs.cloudflare.com/ajax/libs/angular-strap/2.1.2/angular-strap.tpl.min.js"></script>
    <script data-require="angular-strap@2.1.3" data-semver="2.1.3" src="//cdn.rawgit.com/mgcrea/angular-strap/v2.1.3/dist/angular-strap.js"></script>
    <script data-require="angular-strap@2.1.3" data-semver="2.1.3" src="//cdn.rawgit.com/mgcrea/angular-strap/master/dist/angular-strap.tpl.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="tab.js"></script>
    <script src="script.js"></script>
  </head>

  <body>
    <div ng-controller="getList">
      <div data-fade="1" bs-active-pane="tabs.activeTab" bs-tabs="">
        <div ng-repeat="tab in tabs" id="{{ tab.title }}" data-title="{{ tab.title }}" name="{{ tab.title }}" disabled="{{ tab.disabled }}" ng-include="" src="tab.page" bs-pane=""></div>
      </div>
     <!-- <div class="grid" ui-grid-resize-columns="true" ui-grid-pagination="" ui-grid-selection="" ui-grid-auto-resize="" ui-grid-pinning="" ui-grid="gridOptions" style="height: 380px;"></div> -->
    </div>
  </body>

</html>
// Code goes here

angular.module('APP', [ 'ngAnimate', 'mgcrea.ngStrap',
	 'ui.grid', 'ui.grid.pagination',
		'ui.grid.edit', 'ui.grid.autoResize', 'ui.grid.selection',
		'ui.grid.resizeColumns','ui.grid.pinning', 'Tab'])
.controller(
				'getList',
				function($rootScope, $scope, Tab) {
				  
				$scope.tabs = [ {
						title : 'List',
						page : 'tab_list.html',
						id : '0'
					} ];
					$scope.tabs.activeTab = "CEO List";
				  
				      // the list
    $scope.items = [
                    {id: '2', name: 'Jack Ma', city: 'Hangzhou'},
                    {id: '3', name: 'Steven Jobs', city: 'Silicon Valley'},
                    {id: '4', name: 'Elon Musk', city: 'Silicon Valley', viewFlag: true},
                    {id: '5', name: 'Robin', city: 'Beijing'},
                    {id: '6', name: 'Pony', city: 'Shenzhen'}
                    ];
                    
  //$rootScope.items = $scope.items;
    
						$scope.totalItems = 0;
						$scope.pagingOptions = {
							paginationPageSizes : [10, 50, 100, 200, 500, 700, 1000,
									1500, 2000 ],
							paginationPageSize : 10,
							paginationCurrentPage : 1
						};
    
    $scope.gridOptions = {
  		        data : 'items',
							enablePaging : true,
//							showFooter : true,
							paginationPageSizes : $scope.pagingOptions.paginationPageSizes,
							totalItems : 'totalItems',
							options : $scope.pagingOptions,
//							totalItems : $rootScope.totalItems,
						//	i18n : 'zh-cn',
							showColumnMenu : false,
							jqueryUIDraggable : true,
							showSelectionCheckbox : true,
							multiSelect : true,
							selectedItems : [],
							// enableCellEdit: true,
							enableRowSelection : true,
							keepLastSelected : false,

							enableSorting : false,
							enableColumnMenus : false,
							enableColumnResizing : true,
      columnDefs: [
                   {field: 'id', displayName : 'id'},
                   {field: 'name', displayName : 'name'},
                   {field: 'city', displayName : 'city'},
                   {field: 'id',cellTemplate:'<a href="#" ng-click="grid.appScope.view(row.entity)" style="margin:5px;color:Blue">view</a>', displayName:'operation'},],

    };
    
    
	$scope.view = function(obj) {
						$scope.tab = {
							title : "view " + obj.name,
							page : 'view.html',
							id : obj.id
						};
						Tab.add($scope.tab, $scope.tabs);
						$rootScope.item = obj;
					}
				  
})
.controller(
				'view',
				function($rootScope, $scope, $http) {
				  
				})
/* Styles go here */

<div class="row list-search-grid">
	<div class="col-sm-12">
		<div class="grid" ui-grid-resize-columns="true" ui-grid-pagination ui-grid-selection
			ui-grid-auto-resize ui-grid-pinning ui-grid="gridOptions" style="height: 380px;"></div>
</div>
</div>
var Tab = angular.module('Tab', [])

Tab.service('Tab',function($rootScope) {
	
	// 添加tab页
	this.add = function(tab, tabs){
	     tab.title = tab.title + '<input type="hidden" value="'+ tab.id +'">  <span onclick="closeTab(this)"><i class="glyphicon glyphicon-remove"></i></span>';
		   for (var i = 0; i < tabs.length; i++) {
			   if(tabs[i].title == tab.title){
				   tabs.activeTab = tab.title;
				   return;
			   }
		}
		
			tabs.push({title: tab.title, page: tab.page, id: tab.id});
	    tabs.activeTab = tab.title;
			$rootScope.tabs = tabs;  
		
	}
	

	
	closeTab = function(obj){
		var index = obj.parentElement.dataset.index;
		var idObj = document.getElementById($rootScope.tabs[index].title);
		idObj.remove();
		$rootScope.tabs.splice(index, 1);
		if(!angular.isUndefined($rootScope.tabs[index])){
			$rootScope.tabs.activeTab = $rootScope.tabs[index].title;
//			$rootScope.tabs.activeTab = 0;
		}
//		$rootScope.$apply();
		
	}
	// 删除tab页
	
	
});
<div ng-controller="view">
	<form class="form-horizontal" role="form" name="cust_form"
		novalidate="novalidate">
		<fieldset>
			<div class="row list-search">
				<div class="row form-group">
					<label class="col-sm-2 list-lable add-col-sm-1 add-lable">name:
					</label>
					<div class="col-sm-4">
                  {{item.name}}
					</div>
				</div>
				<div class="row form-group">
					<label class="col-sm-2 list-lable add-col-sm-1 add-lable">city:
					</label>
					<div class="col-sm-4">
                  {{item.city}}
					</div>
				</div>









			</div>


			

		</fieldset>
	</form>
</div>