今天搞事情,angularjs项目实例分析

今天呢,我要学习的这个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项目
时间: 2024-11-07 01:25:06

今天搞事情,angularjs项目实例分析的相关文章

[LCA]二月的最后一天来搞事情吧

先发模版题 codevs 2370 小机房的树 poj 1986 Distance Queries poj 1330 Nearest Common Ancestors 感谢机房大佬xqmmcqs的代码 Tarjan版 http://www.cnblogs.com/xqmmcqs/p/5952293.html 树上倍增版 http://www.cnblogs.com/xqmmcqs/p/5954097.html #include<cstdio> #define MAXN #define MAXQ

谷歌搞事情:最先被AI淘汰的,居然是做AI的?

坊间流传着这么一个说法:谷歌想回中国,必须靠AI:而靠AI回中国,必须搞个大事情.于是,上周四的晚上李飞飞发布了一篇博客,然后连着发了三条推特,宣布一个叫AutoML的AI产品启动了. 一夜之间,中国的科技媒体就爆炸了,空气中似乎回荡着那一句话:搞事情了搞事情了搞事情了-- AutoML到底是不是跟谷歌的中国战略有关,我们不做讨论.这里希望帮大家搞清楚的,是这个AutoML到底要搞什么事情. 按照谷歌云AI项目首席科学家李飞飞的说法,AutoML的目标是降低开发者.研究者和企业群体使用人工智能相

苹果又要搞事情了 KlipC紧随其后 苹果官宣了:9月10日10点(当地时间),在位于美国加州的A

苹果又要搞事情了 KlipC紧随其后 苹果官宣了:9月10日10点(当地时间),在位于美国加州的Apple Park举行2019年的秋季发布会.新一波抢钱利器在路上了....新Iphone, Macbook Pro,Apple Watch Series 5.....各大媒体已经开始了对苹果新产品的概念性预测及新款机型的技术性预测.更甚有网友开始调侃今年苹果的Logo.如下图: 看到这个,你想到了什么?KlipC真的不得不佩服这些网友们的想象里,请看下图: 不要笑,看到这几个网友的调侃后,真的觉得

搞事情:linux下安装迅雷和qq。(迅雷接近完美,qq能记住密码,不能视频) 转载

只关心软件下载地址和安装方法的话可以直接下拉到文末"核心内容"处 一.闲聊 我们知道,linux桌面版的普及总是受着很大的制约,其中一个不得不提的原因便是商业软件的缺失,很多我们难以诀别的驱动和商业软件都没有linux原版的(如QQ.迅雷.百度云等),使得我们在使用linux发行版的时候总是遇到诸多的不便.同时,由于linux的开源特性,以linux为核心的发行版可谓是林林总总,仅仅是我所接触的linux发行版便不下20个.不同的linux发行版总是有着不同的特色,但是毫无疑问的是,每

周六搞事情,微信小程序开发文档已放出!

程序员们,你们有事干了! 个人感觉不管是什么形式的UI技术,都无法决定一个产品的生死,核心还是服务和模式的创新. 某些方面和ApiCloud好像,但发展前景远远胜过ApiCloud. 微信小程序可以为中小企业新开发的程序降低开发成本. 未来几年,会影响很多人的人生轨迹,部分人可能工作要不好找了. 想起多年前那句话,App已死,服务永生.  

codevs 5958 无x(搞事情)

这个名字我很想吐槽 这个题目就特别厉害了! 入下: 5958 无 时间限制: 1 s 空间限制: 1000 KB 题目等级 : 大师 Master 题目描述 Description 无 输入描述 Input Description 无 输出描述 Output Description 无 样例输入 Sample Input 无 样例输出 Sample Output 无 数据范围及提示 Data Size & Hint 无 分类标签 Tags 点此展开 代码够简单! 1 int main() 2 {

08 r2系统远程端口搞事情

总结一下思路:先测试下服务器本身.就是在本机mstsc是否能打开界面,然后输入本机IP,看提示的错误信息来判断问题,无法连接,就说明服务没有开启.如果判断远程服务是正常后,就在局域网里找到机器,进行Mstsc来远程.若无法连接的错误,查看2008是不是防火墙阻止了服务,不管是第三方的,还是本机内置的.最后可以判断为远程服务挂了,需要安装远程桌面授权(RD 授权),但装到最后发现该服务需要收费,RD服务安装文档链接为:http://www.jb51.net/os/windows/win2008/1

【51CTO学院】秒杀搞事情!名利双收的好机会来啦!

各位老师大家好!51CTO学院的秒杀活动开始至今,受到了越来越多的学员喜爱.目前每天浏览秒杀活动的学员多达上千人,部分讲师每个月单从秒杀中获得的收入就超过10000元. 但是由此需要的秒杀课程也在增多,为了方便老师申请,同时也减少运营人员的操作成本. 老师们可以通过以下表单进行自主申请,提供课程链接及折扣即可!http://s8vbd1g5aihqr4r5.mikecrm.com/lD7WewP 我们收到课程筛选后,将由技术统一加入秒杀库中.需要注意:已经在秒杀库中的课程,或被移除秒杀库中的课程

深究angularJS系列 - 初识

AngularJS是什么?概念?特征?优点?缺点?那都不是事,话不多说,直接搞起O(∩_∩)O~~ 安装 1.官网http://angularjs.org/下载安装 2.开源库http://www.bootcdn.cn/下载安装 3.bower(一种包管理器)下载安装 bower install angular MVC MVC即"模型 - 视图 - 控制器"的简称,一种设计模式,MVC的从逻辑上将代码清晰地分割为三层,这样可以对每个部分进行独立开发.测试和维护. 模型/Model -