欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺析angularJS中的ui-router和ng-grid模塊

 更新時(shí)間:2016年05月20日 10:30:42   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇淺析angularJS中的ui-router和ng-grid模塊。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

在家里閑著無(wú)聊,正好在網(wǎng)上找到了一個(gè)關(guān)于angular的教程,學(xué)習(xí)了一下angular的ui-router和ng-grid這兩個(gè)模塊,順便模仿著做了一個(gè)小小的東西。

代碼已經(jīng)上傳到github上,地址在這里喲https://github.com/wwervin72/Angular。

有興趣的小伙伴可以看看。那么然后這里我們就先來(lái)了解一下這兩個(gè)模塊的用法。

我們先來(lái)說(shuō)說(shuō)ui-router這個(gè)模塊,這個(gè)模塊主要是用來(lái)實(shí)現(xiàn)深層次的路由的。其實(shí)angular有個(gè)內(nèi)置的指令ng-route,如果在項(xiàng)目中沒有嵌套問(wèn)題的話,那么用這個(gè)指令來(lái)實(shí)現(xiàn)頁(yè)面之間的跳轉(zhuǎn)也還是蠻方便的,但是他的短板就在于,他拿深層次的嵌套路由沒有任何辦法。那么首先,我們要使用這個(gè)模塊我們就需要把他給下載下來(lái)。

下載地址在這里http://www.bootcdn.cn/angular-ui-router/。

下載下來(lái)之后,我們就可以把它導(dǎo)入進(jìn)我們的項(xiàng)目中了,這里要注意下,因?yàn)檫@個(gè)模塊式基于angular的,所以在這之前,我們還需要導(dǎo)入angular的js文件。這個(gè)可以在angular的官網(wǎng)去下載。

那么在上面的準(zhǔn)備工作都做完了之后,我們就可以來(lái)動(dòng)手寫我們的代碼了。

HTML部分

<div class="container">
 <div ui-view>

 </div>
</div>

這里有一點(diǎn)要注意下,div里面添加的屬性不再是ng-view了,而是ui-view。

JS部分

var app=angular.module('app',['ui.router','loginModel','listModel']);

app.config(function ($stateProvider, $urlRouterProvider) {
 $urlRouterProvider.otherwise('/index');
 $stateProvider
 .state('index',{
  url: '/index',
  templateUrl: 'tpls/start.html'
 })
 .state('register',{
  url: '/register',
  templateUrl: 'tpls/register.html'
 })
 .state('main',{
  url: '/main{positionType:[0,9]{1,5}}',
  views: {
  '': {
   templateUrl: 'tpls/main.html'
  },
  'typeList@main': {
   templateUrl: 'tpls/typeList.html'
  },
  'tbHero@main': {
   templateUrl: 'tpls/tbHero.html'
  }
  }
 })
 .state('addHero',{
  url: '/addHero',
  templateUrl: 'tpls/addHero.html'
 })
 .state('find',{
  url: '/findPwd',
  templateUrl: 'tpls/findPwd.html'
 })
 .state('detail',{
  url: '/detail/:id',
  templateUrl: 'tpls/detail.html'
 })
})

這里有三個(gè)地方需要注意:

1、是在進(jìn)行嵌套的時(shí)候,我這里最外層是main部分,然后里面嵌套了typeList和tbHero部分,我們需要注意下這里的寫法。

2、當(dāng)我們需要根據(jù)選擇不同打開不同的內(nèi)容時(shí),也就是需要向下一個(gè)頁(yè)面?zhèn)鲄?shù),我這里是detail部分,我們也需要多注意下這里的寫法。

3、在我們利用angular.module創(chuàng)建一個(gè)app應(yīng)用的時(shí)候,我們需要在里面導(dǎo)入ui.router模塊,另外我們自己創(chuàng)建的一些模塊也需要在這里導(dǎo)入進(jìn)去。

4、我們這里使用$stateProvider來(lái)配置路由了,而不是$routeProvider了,還有就是這里使用的state而不是when。

這里吧路由配置好了之后,剩下的就是寫tpls中各個(gè)部分的代碼了,這里就不做過(guò)多的介紹,這里最重要的就是路由的配置。

好了下面我們?cè)賮?lái)看看ng-grid的用法,這里是下載地址http://www.bootcdn.cn/ng-grid/。

HTML部分

main部分

<div class="row">
 <div class="col-sm-2" ui-view="typeList">

 </div>
 <div class="col-sm-10" ui-view="tbHero">

 </div>
</div>

typeList部分

<div class="row">
 <div class="col-sm-12">
 <div class="list-group">
  <a href="javascript:void(0);" class="list-group-item active">英雄定位類型</a>
  <a ui-sref="main({positionType:0})" class="list-group-item">全部定位</a>
  <a ui-sref="main({positionType:1})" class="list-group-item">射手</a>
  <a ui-sref="main({positionType:2})" class="list-group-item">中單</a>
  <a ui-sref="main({positionType:3})" class="list-group-item">上單</a>
  <a ui-sref="main({positionType:4})" class="list-group-item">打野</a>
  <a ui-sref="main({positionType:5})" class="list-group-item">輔助</a>
 </div>
 </div>
</div>

tbHero部分

<div ng-controller="listCtrl">
 <div class="row">
 <div class="col-sm-3">
  <button class="btn btn-success" ui-sref="addHero()">添加英雄</button>
  <button class="btn btn-warning" ui-sref="index()">退出</button>
 </div>
 <div class="col-sm-9">
  <form class="form-horizontal">
  <input type="text" ng-model="filterOptions.filterText" placeholder="請(qǐng)輸入查詢關(guān)鍵字..." class="form-control searchText"/>
  </form>
 </div>
 </div>
 <div class="row">
 <div class="col-sm-12">
  <div class="gridStyle" ng-grid="gridOptions">

  </div>
 </div>
 </div>
</div>

JS部分

var listModel = angular.module('listModel',['ngGrid']);
listModel.controller('listCtrl',['$scope','$http','$state','$stateParams', function ($scope, $http, $state, $stateParams) {

 $scope.pagingOptions = {
 pageSizes: [5,15,20],
 pageSize: 5,
 currentPage: 1
 };

 $scope.filterOptions = {
 filterText: '',
 useExternalFilter: true
 };

 $scope.totalServerItems = 0;
 $scope.getDates = function (pageSize,page,/*optional*/searchText) {
 setTimeout(function () {
  if(searchText){
  searchText = searchText.toLowerCase();
  $http.get('data/hero.php?param='+$stateParams.positionType).success(function (data) {
   var data = data.filter(function (item) {
   return JSON.stringify(item).indexOf(searchText) != -1;
   })
   data.forEach(function (item,i) {
   item.index = i+1;
   });
   $scope.totalServerItems = data.length;
   $scope.datas=data.slice((page-1)*pageSize,page*pageSize);
  }).error(function (data) {
   alert('請(qǐng)求錯(cuò)誤...');
  })
  }else{
  $http.get('data/hero.php?param='+$stateParams.positionType).success(function (data) {
   data.forEach(function (item,i) {
   item.index = i+1;
   });
   $scope.totalServerItems = data.length;
   $scope.datas = data.slice((page-1)*pageSize,page*pageSize);
  }).error(function (data) {
   alert('請(qǐng)求錯(cuò)誤...');
  })
  }
 },100);
 };
 $scope.getDates($scope.pagingOptions.pageSize,$scope.pagingOptions.currentPage);
 $scope.$watch('pagingOptions', function () {
 $scope.getDates($scope.pagingOptions.pageSize,$scope.pagingOptions.currentPage);
 },true);
 $scope.$watch('filterOptions', function () {
 $scope.getDates($scope.pagingOptions.pageSize,$scope.pagingOptions.currentPage,$scope.filterOptions.filterText);
 },true);

 $scope.gridOptions = {
 data: 'datas',  //表格中顯示的數(shù)據(jù)來(lái)源
 multiSelect: false, //是否能多選
 enableRowSelection: false, //是否能選擇行
 enableCellSelection: true, //是否能選擇單元格
 enableCellEdit: false, //是否能修改內(nèi)容
 enablePinning: true,  //是否被鎖住了
 columnDefs: [
  {
  field: 'index', //這里是數(shù)據(jù)中的屬性名
  width: 80,
  display: '序號(hào)', //這里是表格的每一列的名稱
  pinnable: true,
  sortable: true  //是否能排序
  }, 
  {
  field: 'name',
  displayName: '姓名',
  width: 120,
  sortable: true,
  pinnable: true
  },
  {
  field:'alias',
  displayName:'別名',
  width: 60,
  sortable: true,
  pinnable: true
  },
  {
  field:'position',
  displayName: '定位',
  width: 70,
  sortable: true,
  pinnable: true
  },
  {
  field:'equip',
  displayName: '裝備',
  width: 500,
  sortable: true,
  pinnable: true
  },
  {
  field:'id',
  displayName: '詳細(xì)攻略',
  sortable: false,
  pinnable: true,
  cellTemplate:'<div class="cellDetail"><a ui-sref="detail({id:row.getProperty(col.field)})" id="{{row.getProperty(col.field)}}">詳情</a></div>'
  }
 ],
 enablePaging: true, //是否能翻頁(yè)
 showFooter: true,  //是否顯示表尾
 totalServerItems: 'totalServerItems', //數(shù)據(jù)的總條數(shù) 
 pagingOptions: $scope.pagingOptions, //分頁(yè)部分
 filterOptions: $scope.filterOptions  //數(shù)據(jù)過(guò)濾部分
 }
}])

這里最重要的就是$scope.gridOptions這一塊了,同時(shí)我們需要多注意下最后一個(gè)詳細(xì)攻略里面,傳參數(shù)的寫法。

下面附上幾張效果圖:

下面附上幾張效果圖:

另外在這里面還用到的關(guān)于angular表單驗(yàn)證、service、向?qū)Аhp等方面的內(nèi)容這里就不做過(guò)多介紹了,如果有哪里寫的不對(duì)的地方,萬(wàn)望留言告知,謝謝^_^。

以上這篇淺析angularJS中的ui-router和ng-grid模塊就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論