`
sillycat
  • 浏览: 2551086 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

AngularJS(2)PhoneCat Demo Basic

    博客分类:
  • UI
 
阅读更多

AngularJS(2)PhoneCat Demo Basic

Go on with the PhoneCat demo https://github.com/angular/angular-phonecat 

3. Filtering Repeaters
 
Controller
Load the json data as before

Template
<input ng-model=“query”> This is just a input box with an identifier ‘query’

<ling-repeat="phone in phones | filter:query"]]>
http://code.angularjs.org/1.2.8/docs/api/ng.filter:filter

Data-binding, when page loads, AngularJS binds the name of the input box to a variable of the same name in the data model and keeps the 2 in sync.

AngularJS is really powerful here.

End-to-End Test
In the e2e/scenarios.js

There are 2 options to start the e2e test.
Start the Web Server, and visit http://localhost:8000/test/e2e/runner.html

Or

Start the Web Server, and run the command
>./scripts/web-server.js 
>./scripts/e2e-test.sh

4. Two-way Data Binding
Template
<select ng-model=“orderProp”>
     <option value=“name”>Alphabetical</option>
     <option value=“age”>Newest</option>
</select>

<li ng-repeat=“phone in phones | filter: query | orderBy: orderProp”>

In the controllerJS file, we had codes like this>
$scope.orderProp = 'age’;

So it is like our default value for the select box, we are 2 way binding.
 
Reverse the sort like this
<option value="-age">Oldest</option> 

5. XHRs & Dependency Injection
Data
Put the mock fake data in the app/phones/phones.json file.

Controller
$http is just one of several built-in angular services that handle common operations in web apps.

Services are managed by Angular’s DI subsystem.
phonecatApp.controller(‘PhoneListCtrl’, function($scope, $http) {
     $http.get(‘phones/phones.json’).success(function(data) {
          $scope.phones = data;
     });
});

$http, this built-in object is really import to us.

$Prefix Naming Convention

Test
        beforeEach(inject(function(_$httpBackend_, $rootScope, $controller) {
            $httpBackend = _$httpBackend_;
            $httpBackend.expectGET('phones/phones.json').
                respond([{name: 'Nexus S'}, {name: 'Motorola DROID'}]);

            scope = $rootScope.$new();
            ctrl = $controller('PhoneListCtrl', {$scope: scope});
        }));

        it('should create "phones" model with 2 phones fetched from xhr', function() {
            expect(scope.phones).toBeUndefined();
            $httpBackend.flush();

            expect(scope.phones).toEqual([{name: 'Nexus S'},
                {name: 'Motorola DROID'}]);
        }); 

6. Templating Links & Images
Data
We have id and imageUrl in the JSON String.

Template
Just normal HTML template
                    <li ng-repeat="phone in phones | filter:query | orderBy:orderProp" class="thumbnail">
                        <a href="#/phones/{{phone.id}}" class="thumb"><img ng-src="{{phone.imageUrl}}"></a>
                        <a href="#/phones/{{phone.id}}">{{phone.name}}</a>
                        <p>{{phone.snippet}}</p>
                    </li> 

Test
            input('query').enter('nexus');
            element('.phones li a').click();
            expect(browser().location().url()).toBe('/phones/nexus-s'); 

7. Routing & Multiple Views
Turn the index.html into layout template.

Application routes in Angular are declared via the $routeProvider, which is the provider of the $route service.

Multiple Views, Routing and Layout Template
It loads all the modules in app.js 
var phonecatApp = angular.module('phonecatApp', [
  'ngRoute',
  'phonecatControllers'
]); 

And we have a routing like backboneJS
      when('/phones', {
        templateUrl: 'partials/phone-list.html',
        controller: 'PhoneListCtrl'
      }). 

Only defines the Controllers in controllers.js

var phonecatControllers = angular.module('phonecatControllers', []);

phonecatControllers.controller('PhoneListCtrl', ['$scope', '$http',
  function($scope, $http) {
    $http.get('phones/phones.json').success(function(data) {
      $scope.phones = data;
    });

    $scope.orderProp = 'age';
  }]);

phonecatControllers.controller('PhoneDetailCtrl', ['$scope', '$routeParams',
  function($scope, $routeParams) {
    $scope.phoneId = $routeParams.phoneId;
  }]); 

Layout Template
    <div ng-view></div> 

8. More Templating
Just add Detail controller, Detail template, Detail Data.


References:
http://code.angularjs.org/1.2.8/docs/tutorial/step_03
http://code.angularjs.org/1.2.8/docs/tutorial/step_05

分享到:
评论

相关推荐

    AngularJs2 官网demo

    angularJs2官网demo,使用方法:需要在本地安装npm,(https://nodejs.org/en/下载最新版本的nodeJs,保证node的版本高于等于v5.x.x,npm版本高于等于3.x.x),使用node -V或者npm -V检查版本。 下载文档之解压到某个目录...

    angularjs_requirejs demo

    2. **定义模块**:然后,使用RequireJS的define方法定义AngularJS的模块。每个模块文件都应该声明其依赖,这包括其他AngularJS模块和服务。 3. **注入服务**:在AngularJS中,我们通常会创建服务并注入到控制器或...

    angularJs demo 各种基本用法

    在"angularJs demo 各种基本用法"中,我们可以深入探讨以下几个关键概念:路由(router)、过滤器(filter)、服务(service)以及指令(diractive)。 **路由(Router)**: AngularJS的路由功能允许我们根据URL来...

    AngularJS入门小Demo

    **AngularJS 入门小 Demo** AngularJS 是一个强大的前端 JavaScript 框架,由 Google 维护,用于构建单页应用(Single-Page Applications, SPA)。它通过数据绑定和依赖注入等特性,极大地简化了网页开发过程。在这...

    Springmvc和Angularjs交互代码Demo

    在这个"Springmvc和Angularjs交互代码Demo"中,我们可以看到如何将这两者结合使用,实现前后端的数据交换和交互。 Spring MVC在后端主要负责处理HTTP请求、业务逻辑处理以及数据访问。它通过控制器(Controller)将...

    angularjsdemo

    【标题】"AngularJS Demo" 是一个展示AngularJS实际应用的示例项目,它可能包含了开发者在学习或实践AngularJS框架时创建的各种组件和功能。AngularJS是Google维护的一个前端JavaScript框架,它用于构建交互式的单页...

    angularjs表单验证Demo

    AngularJS是前端开发流行框架,本Demo展示了表单验证的意义,及实现方法,掌握Angular基础指令,通过不同的指令元素可以拥有不同功能,并通过指令与表单合作验证,从而实现表单验证的敏捷化开发。

    AngularJS+springmvc的demo

    **AngularJS + SpringMVC 入门Demo详解** AngularJS 和 SpringMVC 是两种非常流行的开源框架,分别在前端和后端发挥着重要作用。AngularJS 是一个强大的 JavaScript 框架,用于构建单页应用程序(SPA),而 ...

    angularjs的demo

    angularjs的demo

    angularjs分页实例

    在本文中,我们将深入探讨AngularJS分页的实现方法,这是一种强大的前端JavaScript框架,用于构建交互式的Web应用程序。AngularJS的分页功能是提高大型数据集加载效率的关键,它允许用户逐步加载数据,而不是一次性...

    angularjs ui.router嵌套路由demo

    这个"angularjs ui.router嵌套路由demo"是展示如何在AngularJS项目中使用UI.Router进行多级路由配置和页面嵌套的一个实例。通过这个demo,我们可以深入理解UI.Router的工作原理和实际应用。 首先,UI.Router不同于...

    angularJS route路由demo

    ### 2. 引入`ngRoute`模块 在使用`$route`之前,需要首先在项目中引入`ngRoute`模块。这通常在主模块定义时完成: ```javascript var app = angular.module('myApp', ['ngRoute']); ``` ### 3. 配置路由 接下来...

    AngularJS_1..5.0_Demo

    AngularJS + Bootstrap Demo项目,获取豆瓣电影数据

    angularjs中select2使用 demo

    这个"angularjs中select2使用demo"应该是一个示例项目,展示了如何在AngularJS应用中集成和使用Select2。 首先,让我们了解AngularJS和Select2的基础知识。AngularJS是由Google维护的一个JavaScript框架,用于构建...

    angularjs demo

    这个"angularjs demo"压缩包很可能是包含了一些示例项目,帮助开发者理解和学习AngularJS的核心概念和功能。 首先,AngularJS的核心特性包括数据绑定、依赖注入、指令系统、过滤器和表单处理等。数据绑定是...

    springmvc+angularjs springmvc 整合angularjs demo

    2. **编写Controller**:创建一个Controller,定义一个返回JSON数据的方法,例如: ```java @RestController public class MyController { @RequestMapping(value = "/data", method = RequestMethod.GET) @...

    angularjs文件上传插件

    此外,它还兼容了最新的 Angular 版本,包括 Angular 1.x 和 AngularJS 2+,为不同版本的 Angular 开发者提供了便利。 总之,AngularJS 文件上传插件 ng-file-upload 是一个强大且灵活的工具,它为开发者提供了丰富...

    一个基于angularjs2的脚手架

    2. 克隆或下载angularjs-demo-master压缩包并解压。 3. 进入项目目录,安装依赖:`npm install`。 4. 使用Angular CLI启动开发服务器:`ng serve`。 5. 编辑源代码,根据项目需求调整布局、路由和服务。 6. 构建生产...

    AngularJs demo 例子(表单验证) form

    本示例以"AngularJs demo 例子(表单验证)form"为主题,结合bootstrap美化,展示了如何在AngularJS中实现表单验证。 **1. AngularJS 表单基础** 在AngularJS中,表单是由`&lt;form&gt;`标签定义的,可以通过`ngForm`或`...

    SpringMVC整合AngularJS简单Demo.zip

    2. **Controller**:SpringMVC的Controller类,定义了处理AngularJS请求的方法,例如处理登录、注册、获取数据等。这些方法通常返回JSON格式的数据,AngularJS可以通过Ajax请求获取并显示。 3. **AngularJS应用**:...

Global site tag (gtag.js) - Google Analytics