浓缩解读前端系列书籍

《用AngularJS开发下一代Web应用》读书笔记①:Angu

2016-11-18  本文已影响60人  梁同学de自言自语
IMG_20161118_181453_HDR.jpg

开篇是技术框架惯例的吹牛逼时间,建议略过

介绍一些AngularJS框架中涉及到的概念

客户端模板

<!DOCTYPE html>
<!-- 1.通过ng-app设置Angular管理的范围 -->
<html ng-app="myApp">
    <head>
        <meta charset="UTF-8">
        <title>AngularJS Hello World</title>
    </head>
    <!-- 2.引入Angular的文件 -->
    <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"/>
    <body>
        <!-- 3.通过ng-controller定义控制器 -->
        <div ng-controller="HelloController">
            <!-- 4.嵌套花括号的方式执行angular表达式 --> 
            <h3 class="show">{{text}},World</h3>
        </div>
    </body>
    <!-- 5.编写控制器的实现细节 -->
    <script type="text/javascript">
        var app = angular.module('myApp', []);
        app.controller('HelloController', function($scope) {
            $scope.text = "Hello";  //初始值
        });
    </script>
</html>

Model View Controller(MVC)

数据绑定

<!DOCTYPE html>
<!-- 1.通过ng-app设置Angular管理的范围 -->
<html ng-app="myApp">
    <head>
        <meta charset="UTF-8">
        <title>AngularJS Hello World</title>
    </head>
    <!-- 2.引入Angular的文件 -->
    <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script>
    <body>
        <!-- 3.通过ng-controller定义控制器 -->
        <div ng-controller="HelloController">
            <!-- 4.ng-model进行数据模型绑定 -->
            <input ng-model='text' />
            <!-- 5.嵌嵌套花括号的方式执行angular表达式 -->    
            <h3 class="show">{{text}},World</h3>
        </div>
    </body>
    <!-- 5.编写控制器的实现细节 -->
    <script type="text/javascript">
        var app = angular.module('myApp', []);
        app.controller('HelloController', function($scope) {
            $scope.text = "";   //初始值
        });
    </script>
</html>

效果:


数据绑定案例

依赖注入

迪米特法则,也叫做最少知识原则,核心含义是一个类要尽量少地知道其他类的相关信息。

指令

入门实例:购物车

<!DOCTYPE html>
<!-- 通过ng-app设置Angular管理的范围 -->
<html ng-app="myApp">
    <head>
        <meta charset="UTF-8">
        <title>AngularJS Shopping Cart</title>
    </head>
    <style type="text/css">
        span{border: 1px solid #CCCCCC;}
        .bookItem{margin-bottom: 15px;}
        .bookName{font-weight: bold;}
        .bookPrice{width: 28px;text-align: center;}
    </style>
    <!-- 引入Angular的文件 -->
    <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script>
    <body ng-controller='CartController'>
        <h2>你的购物车</h2>
        <!-- 通过ng-repeat遍历数据模型,并复制DOM结构 -->
        <div ng-repeat='item in items' class="bookItem">
            <!-- 获取数据模型中的属性值放入DOM结构 -->
            <div class="bookName">{{item.title}}</div>
            <!-- ng-model把数据模型和输入框绑定关系 -->
            <input ng-model='item.quantity' class="bookPrice"/>
            <span>单价:{{item.price}}元</span>
            <span>总价:{{item.price * item.quantity}}元</span>
            <button ng-click="remove($index)">移除</button>
        </div>
    </body>
    <!-- 在自定义控制器中实现业务细节 -->
    <script type="text/javascript">
        var app = angular.module('myApp', []);
        app.controller('CartController', function($scope) {
            //虚拟数据
            $scope.items = [
                {
                    title : 'JavaScript性能优化:度量、监控与可视化',
                    quantity : 1,
                    price : 40.40
                },
                {
                    title : 'HTML5基础知识 核心技术与前沿案例',
                    quantity : 2,
                    price : 59.30
                },
                {
                    title : 'ES6标准入门',
                    quantity : 1,
                    price : 58.70
                }
            ];
            //移除方法
            $scope.remove = function(index){
                $scope.items.splice(index,1);
            };
        });
    </script>
</html>

效果:


Angular购物车案例
上一篇 下一篇

猜你喜欢

热点阅读