学习笔记-AngularJs(五)

之前的页面太丑了,后来我引入了bootstrap.css,把样式进行修了一番,如下图:

(链接:http://www.live086.cn/angularjs/#/phones

是不是觉得好看多了,这里我在原先phone.json里面多加了人物的图片,于是phone.json就变成:

[

        {"id":1, "name":"xioabin","number":"18824863982","age":12,"thumb":"image/nan.jpg"},
     ....
]//图片可以自己找

控制器文件没有任何变化,模版文件加了bootstrap.css,有了明显的变化,代码如下:

<!doctype html>

<html ng-app ng-controller="PhoneListCtrl">

  <head>

      <meta charset=‘utf8‘ />

      <title ng-bind="‘Google Phone Gallery:‘ + query"></title>  

      <!-- <title ng-bind-template="Google Phone Gallery:{{query}}"></title> -->

    <script src="http://code.angularjs.org/angular-1.0.1.min.js"></script>

    <script src="script.js"></script>

    <link rel="stylesheet" href="bootstrap.min.css">

  </head>

  <body>

    <div class="example2">

    <form class="form-inline" style="margin:20px 0;">
      <div class="form-group"><label for="select">帅选:</label><select name="select" id="select" ng-model=‘order‘ class="form-control" ><option value="name">名字</option><option value="age">年龄</option> </select></div>
      <div class="form-group"><label for="search">搜索</label><input id="search" name="search" type="text" ng-model=‘query‘ class="form-control"  /></div>
    </form>

         <!--迭代器-->

    <table class="table">
        <tr>
          <th class="text-center">头像</th>
          <th class="text-center">昵称</th>
          <th class="text-center">电话号码</th>
          <th class="text-center">年龄</th>
        </tr>
        <tr ng-repeat=‘phone in phones | filter:query | orderBy:order‘>
          <td class="text-center"><a href="#/phones/{{phone.id}}"><img ng-src="{{phone.thumb}}"  style="width:40px;height:40px;border-radius:50%;" alt="hahah"></a>  <!--添加ng-src识别绑定的数据--></td>
          <td class="text-center">{{phone.name}}</td>
          <td class="text-center">{{phone.number}}</td>
          <td class="text-center">{{phone.age}}</td>
        </tr>
    </table>

    </div>

  </body>

</html>

其他内容不变,但是由于json文件里面我们加了人物的图片,我需要使用ng-src来绑定图片路径的,这个不能使用原始的src,不然src="{{phone.thumb}}"是加载不了图片资源的。

有没有注意到"#/phones/{{phone.id}}"为啥要怎样写,于是这里就涉及到路由的配置和怎么实现多视图之间的跳转了,于是我们对整个学习项目做了修改:目录如下:

这里就如同我们之前所讲,将控制器文件,服务文件,过滤器,指令都分开来写,index.html就是这个学习项目的布局模板,也可以理解成根模板,所有视图(其他模板tpls)会通过路由加载到这个模板的ng-view里面,代码如下:

<!doctype html>

<html ng-app="phonecat">

  <head>

      <meta charset=‘utf8‘ />

      <title ng-bind="‘Google Phone Gallery:‘ + query"></title>  

      <!-- <title ng-bind-template="Google Phone Gallery:{{query}}"></title> -->

    <!--ng-bind与ng-bind-template的使用方式-->

    <script src="lib/angular.min.js"></script>
    <script src="lib/angular-route.js"></script>
    <script src="app.js"></script>
    <script src="controllers.js"></script>

    <link rel="stylesheet" href="bootstrap.min.css">

  </head>

  <body>

    <div ng-view></div>

  </body>

</html>

app.js,首先通过angular.module(‘phonecat‘,  [‘ngRoute‘,‘phoneController‘]);建立模块,记住ng-app="phonecat",对于一个html页面想有多个ng-app,可以angualr.bootstrap(doucment,[‘phonecat‘,...]);在这里需要注入"ngRoute"服务,而且也必须引入angular-route.js,

var phonecat = angular.module(‘phonecat‘,  [‘ngRoute‘,‘phoneController‘]);  //[....]依赖注入

phonecat.config([‘$routeProvider‘,function($routeProvider){
    $routeProvider.
        when("/phones",{templateUrl:"tpls/phones-list.html",controller:"phone-list-controller"}).
        when("/phones/:phoneId",{templateUrl:"tpls/phones_detail.html",controller:"phone-detail-controller"}).
        otherwise({redirectTo:"/phones"});
}])

//这里的配置是这样的意思:域名+项目目录+/#/phones那么会跳转至tpls/phones-list.html,处理的控制器为phone-list-controller
域名+项目目录+/#/phones/id那么会跳转至tpls/phones_detail.html,处理的控制器为phone-detail-controller
//使用config注入$routeProvider服务(只有引入ngRoute模块才可以使用),when(path, route)和otherwise(params)来定义路由,  when(path,route)   path: 访问的url; route是一个对象,里面controller(对应控制器),controllerAs,templateUrl(模板的路径)、tempalte、redirectTo  otherwise(params), 是匹配没有相应路由时,该怎么处理!{redirectTo:"/phones"} 跳转至/phones

phone-list.html

 <div ng-controller="phone-list-controller">
    <form class="form-inline" style="margin:20px 0;">
      <div class="form-group"><label for="select">帅选:</label><select name="select" id="select" ng-model=‘order‘ class="form-control" ><option value="name">名字</option><option value="age">年龄</option> </select></div>
      <div class="form-group"><label for="search">搜索</label><input id="search" name="search" type="text" ng-model=‘query‘ class="form-control"  /></div>
    </form>

    <!--迭代器-->

    <table class="table">
        <tr>
          <th class="text-center">头像</th>
          <th class="text-center">昵称</th>
          <th class="text-center">电话号码</th>
          <th class="text-center">年龄</th>
        </tr>
        <tr ng-repeat=‘phone in phones | filter:query | orderBy:order‘>
          <td class="text-center"><a href="#/phones/{{phone.id}}"><img ng-src="{{phone.thumb}}"  style="width:40px;height:40px;border-radius:50%;" alt="hahah"></a>  <!--添加ng-src识别绑定的数据--></td>
          <td class="text-center">{{phone.name}}</td>
          <td class="text-center">{{phone.number}}</td>
          <td class="text-center">{{phone.age}}</td>
        </tr>
    </table>

 </div>

phone-detail.html

这是phoneId为{{phoneId}}的详情页

controllers.js

var phoneController = angular.module(‘phoneController‘,  []);
phoneController.controller("phone-list-controller",[‘$scope‘,‘$http‘,function($scope,$http){
      $http.get("phone.json").success(function(data, status, headers, config) {
          if(status==200){ $scope.phones = data;  }
            console.log(status+","+headers+","+config);
            // alert(JSON.stringify(data));
      });
        $scope.order = ‘name‘;
}]);
phoneController.controller("phone-detail-controller",["$scope",‘$routeParams‘,function($scope,$routeParams){
    $scope.phoneId = $routeParams.phoneId;  //$routeParams是需要引入ngRoute模块,获得传过来的参数phoneId
}])
时间: 2024-08-29 18:58:31

学习笔记-AngularJs(五)的相关文章

学习笔记-AngularJs(六)

在学习笔记-AngularJs(五),通过引入bootstrap.css进行改写整个样式,这时学习项目也变得好看多了,现在我们又需要目录再进行一次改变,如下图: 这样就符合之前讲的对学习目录进行布置了! angualrJs自带了一些默认的过滤器,如: {{"xiaobin" | uppercase}} {{"XIAOBIN" | lowercase}} {{ 1304375948024 | date:"yyyy-MM-dd"}} {{ {&quo

《iOS应用逆向工程》学习笔记(五)初尝越狱插件OpenSSH

首先在越狱机子上装上OpenSSH插件,然后查看设备的IP地址,这里假设为192.168.xxx.xxx. 然后用Mac上的Terminal通过Open SSH连接到设备上(初次登录密码是alpine,必须立即修改,否则任何人都可以连接到你的机子上搞破坏). 连接命令为:ssh [email protected]设备IP地址 修改密码命令为:passwd 例如: $ ssh [email protected] The authenticity of host '192.168.xxx.xxx (

mysql学习笔记 第五天

使用分区数据表: 分区数据表和merge数据表具有相似的作用,但是分区数据表确确实实是一个数据表 ,不像merge是列出数据表的逻辑关系,并且分区数据表可以包括像myisam以外的 的数据表.创建分区数据表: create table 里给出数据列和索引,然后用partition by 定义一个用来把数据行分配 到各个分区的分区函数:[将数据表分成四个区] create table log_partition( dt datetime not null, info varchar(100) no

Cocos2d-x 3.2 学习笔记(五)Sprite Node

游戏中最重要的元素Sprite精灵,关于精灵的创建,精灵的控制等等. 涉及到的类Class: AnimationFrame 动画帧. Animation 动画对象:一个用来在精灵对象上表现动画的动画对象. AnimationCache 动画缓存单例类. 如何你想要保存动画,你需要使用这个缓存. Sprite 精灵;定义为二维图像. SpriteBatchNode 与批量节点类似,如果包含子节点会在一次OpenGL调用内绘制完成. SpriteFrame 一个精灵帧. SpriteFrameCac

Django学习笔记(五)—— 表单

疯狂的暑假学习之  Django学习笔记(五)-- 表单 参考:<The Django Book> 第7章 1. HttpRequest对象的信息 request.path                                 除域名以外的请求路径,斜杠开头                      "/hello/" request.get_host()                      主机名                              

Spring3.0官网文档学习笔记(五)--3.3

3.3 概述 Table 3.1. The bean definition Property Explained in... class Section 3.3.2, "Instantiating beans" name Section 3.3.1, "Naming beans" scope Section 3.5, "Bean scopes" constructor arguments Section 3.4.1, "Dependen

《CSS网站布局实录》学习笔记(五)

第五章 CSS内容排版 5.1 文字排版 5.1.1 通栏排版 进行网页通栏排版时,只要直接将段落文字放置于p或者其他对象中,再对段落文字应用间距.行距.字号等样式控制,便形成了排版雏形. 5.1.2 分栏排版 CSS2技术对普通段落文字不能够直接实现分栏排版,如果需要实现类似报纸那样的双栏或者三栏排版,则必须借助于二列布局那样的两个div浮动定位而形成二列控件,然后再将文字分别填充此二列之中.XHTML代码如下: 1 <div id="layout"> 2 <div

学习笔记-AngularJs(九)

到目前为止,我们所做的学习案例都是没有加任何动画效果的,对于以往来说,我们经常会去使用一些动画插件或是css框架(如:animate.css)来点缀我们的网页,这样显得生动,高大上,那么接下来我们可以学习一下,怎么在AngularJs下来实现叼酷炫的动画操作,主要使用的命令是ngAnimate. 与之前的ngResource,ngRoute一样,需要注入ngAnimate和引入ng-animate.js才可以使用此服务,想在你的angular应用程序使用ngAnimate来实现动画功能,前提条件

GDI+学习笔记(五)绘制一个正方体

本文将介绍如何利用GDI+绘制一个正方体. (一)准备阶段 想象一下,高中的时候,我们在学立体几何的时候是怎样画一个正方体的,我们在一张纸上利用投影的思路将其绘制在一张纸上,对吧,这计算投影的部分,我们暂且忽略.下图是我用windows的画图绘制的一个正方体: 我们计算出这些点在平面上的坐标如下: Point A(100,200); Point B(200,200); Point C(100,300); Point D(200,300); Point E(100+50*1.414, 200-50

最大熵学习笔记(五)最优化算法

  生活中我们经常听到人们说"不要把鸡蛋放到一个篮子里",这样可以降低风险.深究一下,这是为什么呢?其实,这里边包含了所谓的最大熵原理(The Maximum Entropy Principle).本文为一则读书笔记,将对最大熵原理以及由此导出的最大熵模型进行介绍,重点给出其中所涉及数学公式的理解和详细推导. 相关链接 最大熵学习笔记(零)目录和引言 最大熵学习笔记(一)预备知识 最大熵学习笔记(二)最大熵原理 最大熵学习笔记(三)最大熵模型 最大熵学习笔记(四)模型求解 最大熵学习笔