今天搞事情,angularjs項目執行個體分析

來源:互聯網
上載者:User

標籤:direct   部分   載入   切換   replace   跳轉   htm   back   listctrl   

今天呢,我要學習的這個angularjs項目的github地址為:https://github.com/monw3c/angularjs_pingan

可能呢?這不是最好的angularjs執行個體,但是呢還是好好分析其中是什麼一個原理

好了開始了,首先你就這個項目git clone到本地

1、開啟到 angularjs_pingan所在的檔案夾

2、建個本地服務,這裡我用到的是http-server    

npm install http-server --save-dev

接著http-server  

可以瀏覽器開啟網址:localhost:8080/

可以看到

      

      

看到這個頁面進行分析

頁面的頂部:分為header和content

header由三部分組成

返回按鈕    title    收藏按鈕

實現方式:

define([‘app‘], function(app){         return app.controller(‘lcxqCtrl‘, [‘$scope‘,‘$rootScope‘,‘$http‘, function ($scope,$rootScope,$http) {            $rootScope.headTitle = $rootScope.title = "產品詳情";            $rootScope.favBol = false;            $rootScope.backBol = true;            $http.get(‘./json/lcxq.json‘).              success(function(data) {                                $scope.lc = data;              });    }])

title為{{headTitle }}

通過ng-show="favBol "  ng-show="backBol "來控制返回上一頁,收藏按鈕是否顯示

收藏的按鈕點擊切換class來出現標示的效果這裡寫了一個directive實現 具體代碼

<fav-btn></fav-btn>

  

/** * 收藏按鈕的directive */define([‘jquery‘,‘app‘], function ($,app) {      app.directive(‘favBtn‘, [function () {        return {            restrict: ‘AE‘,            replace: true,            template: ‘<a href="javascript:void(0)" class="btn-fav" ng-show="favBol"><span></span></a>‘,            link: function (scope, ele, attr) {                $(ele).bind("click", function(){                    $(this).toggleClass(‘btn-fav-select‘)                })                            }            }  }])})

content:

接下來的content的部分主要的實現

content主要是資料的渲染,從後台取到資料進行套用

define([‘app‘,‘geoFactory‘], function(app,geoFactory){         return app.controller(‘wdListCtrl‘, [‘$scope‘,‘$rootScope‘,‘$http‘,‘geoFactory‘, function ($scope,$rootScope,$http,geoFactory) {            $rootScope.headTitle = $rootScope.title = "營業網點";            $rootScope.favBol = false;            $rootScope.backBol = false;            $scope.getMore = function(){              angular.element(‘.list-box ul‘).append(‘<p>1111111111111111111111</p>‘)            }            $http.get(‘./json/yywd.json‘).              success(function(data) {                $scope.branchs = data.branchs;                              });        }])})
<link rel="stylesheet" href="css/yywd.css" type="text/css" /><div class="search-box">      <b class="dw"><img src="images/dingwei.png"></b>      <input type="search" class="search-input" placeholder="輸入網點地址或名稱">      <button class="btn">搜尋</button>    </div>    <div class="list-box" >       <ul>        <li ng-repeat="branch in branchs">          <a href="#/wdxq">           <dl>            <dt class="search-key-img">              <img ng-src="{{branch.branch_logo}}">            </dt>             <dd class="search-key-title">               <p>{{branch.branch_name}}</p>              </dd>              <dd class="search-key-info">               <p>{{branch.branch_type}}</p>              </dd>              <dd class="search-key-tag">                <p>{{branch.branch_addr}}</p>              </dd>            </dl>          </a>        </li>       </ul>        <p class="get-more" ng-click="getMore()">載入更多</p>    </div>    <div geo refresh="refreshGeo()"></div>

  這裡面的主要的套路的就是這樣的

頁面的跳轉的套路呢就是:

/** * 路由 */define([‘app‘], function(app){     return app.config([‘$routeProvider‘,function($routeProvider) {            $routeProvider              .when(‘/‘, {                templateUrl: ‘js/views/wd/list.html‘,                controller: ‘wdListCtrl‘              })              .when(‘/wdxq‘, {                templateUrl: ‘js/views/wd/xq.html‘,                controller: ‘wdxqCtrl‘              })              .when(‘/sh‘, {                templateUrl: ‘js/views/sh/list.html‘,                controller: ‘shListCtrl‘              })              .when(‘/shxq‘, {                templateUrl: ‘js/views/sh/xq.html‘,                controller: ‘shxqCtrl‘              })              .when(‘/listimg‘, {                templateUrl: ‘js/views/sh/listimg.html‘,                controller: ‘listimgCtrl‘              })              .when(‘/jr‘, {                templateUrl: ‘js/views/jr/list.html‘,                controller: ‘jrListCtrl‘              })              .when(‘/lcxq‘, {                templateUrl: ‘js/views/jr/lcxq.html‘,                controller: ‘lcxqCtrl‘              })              .when(‘/jjxq‘, {                templateUrl: ‘js/views/jr/jjxq.html‘,                controller: ‘jjxqCtrl‘              })              .otherwise({ redirectTo: ‘/‘ });              //$locationProvider.html5Mode(true).hashPrefix(‘!‘);   }])     })

 

  分析index.html中所用到的技術

angular.bootstrap(document,["pinganApp"]);
用了這個就不要在index.html加上ng-app="pinganApp"

然後就是控制器的套路,每個頁面對應一個控制器,這裡注意了是寫在路由上
 .when(‘/jjxq‘, {      templateUrl: ‘js/views/jr/jjxq.html‘,      controller: ‘jjxqCtrl‘ })

接下來自己還會去多看看angular項目進行一個實際的分析,最後自己設計一個angular項目

 

今天搞事情,angularjs項目執行個體分析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.