MVC     后台
    M         Module             数据层
    V         View             视图层
    C         Controller         控制层

前端开始用MVC
    M         数据层         交互
    V         视图层         DOM操作
    C         控制层         逻辑

===================================================
不用原生写MVC
    1.不是所有人都懂MVC,用人需求变高。
    2.风格不统一
===================================================
库和框架的区别?
    库             辅助程序员开发         JQuery
    框架         限制程序员开发         Angular
===================================================
AngularJS
    MVVM的框架

Angular火。有人在推,Google

用的人少了,自己作。更新。
        主版本.次版本.修订号
        1.2.x             
            玩法直接变了
        1.3.x                  
                javascript    
        2.x
                TypeScript

本质还是MVC,只不过衍生出很多叫法
        MVC
        MVVM
        MVP
        MV*
=====================================================
    面向过程         
    面向对象
    面向数据

致力于解决所有交互所带来的痛苦。
        只需要关心数据就行。
=======================================================
    官网:https://angularjs.org/
    下载:https://code.angularjs.org/
    文档:https://code.angularjs.org/1.5.8/docs/api
=======================================================
Function             Angular提供的方法
    angular.bind             矫正this

angular.bootstrap         开启angular应用

angular.copy             复制对象

angular.element         小jquery

angular.equals             比较是否相等

angular.forEach         迭代

angular.fromJson

angular.isArray         检测是否是数组

angular.module             angular模块

===================================================
    玩的就是数据——数据就是一切
        ng-app             哪是angular管的
            一个页面只能加一个
        ng-model         数据源
        ng-bind         数据绑定

ng-bind平时用的少。
        用:{{}}

angular的核心:
    依赖注入、双向绑定

===================================================
Directive         指令
    ng-app
    ng-model
    ng-bind
    ng-init         初始化
    ng-click         点击
    ng-repeat         迭代
        {{$index}}         索引
        {{$first}}         是否是第一行
        {{$last}}         是否是最后一样
        {{$even}}         是否是奇数行
        {{$odd}}         是否是偶数行

数组有重复会有问题:
            原因:默认把值当成索引了。
        解决:
            ng-repeat="item in arr track by $index"

ng-show         显示
    ng-hide         隐藏
    ng-if             如果是真的就显示,否则就已隐藏

ng-controller     控制器

环境:
        原生环境
        NG环境

================================================
Controller             控制器
    
    let app = angular.module('名字',[依赖]);

app.controller('控制名字',($scope)=>{
        $scope         当前控制器的域
    });

==================================================
Filter                 过滤器
    {{item.price|currency}}
    currency             货币
        {{item.price|currency:'¥'}}
    date                 日期

filter                 过滤器

limitTo             限制数量

number                 1004354548

================================================
Angular的问题
    数据变了,但是DOM没有渲染
    解决:
        脏检查

==============================================
Service             服务
    $interval         定时器
    $timeout         定时器
==============================================
交互
    $http服务

GET
        $http.get('url',{
            params:{
                参数
            }
        }).then((res)=>{
            res.data             数据
        },(err)=>{

});
    POST
        $http({
            method:'POST',
            url:'',
            data:{
                参数
            },
            headers:{
                'Content-Type':'application/x-www-form-urlencoded'
            },
            transformRequest:function(data){
                var arr = [];
                for(var key in data){
                    arr.push(key+'='+data[key]);
                }
                return arr.join('&');
            }
        }).then((res)=>{
            res.data             数据
        },(err)=>{

});

---------------------------------------------------

Angular
    优势是做SPA

spa         单页应用
==================================================
controller         通信
    父子级通信

子级给父级发送数据
        发送
            $scope.$emit('名字',值);

父级给子级发送数据
        发送
            $scope.$broadcast('名字',值);

接收
        $scope.$on('名字',function(ev,data){
            data
        });

===============================================
jsonp
    https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su

================================================
    filter                 过滤器
        
        自定义过滤器
        app.filter('过滤器名字',function(){
            return function(input){
                操作input的值。
                return 值;
            };
        });

capitalizes         首字母大写

getCnDay             获取中文星期

trim                 去除首尾空格
==================================================
    自定义指令
        directive

app.directive('名字',function(){
            return {
                link:function(scope,ele,attr){

}
            };
        });

===================================================
深入Controller
    传统写法不能压缩,因为angular核心是依赖注入

app.controller('main',['$scope','$http',function(scope,http){

}]);

controller的另一种写法
    var app = angular.module('app',[],function($controllerProvider){
        $controllerProvider.register('控制器名字',function($scope){

});
    });

filter的另一种写法
    var app = angular.module('app',[],function($controllerProvider,$filterProvider){
        $filterProvider.register('名字',function(){
            return function(input,param){

};
        });
        $controllerProvider.register('控制器名字',function($scope){

});
    });

directive另一种写法
    var app = angular.module('app',[],function($controllerProvider,$filterProvider,$compileProvider){

$compileProvider.directive('名字',function(){
            return {
                link(scope,ele,attr){

}
            };
        });

$filterProvider.register('名字',function(){
            return function(input,param){

};
        });
        $controllerProvider.register('控制器名字',function($scope){

});
    });
==============================================

前端学习(三十七)angular(笔记)的更多相关文章

  1. 前端学习:JS(面向对象)代码笔记

    前端学习:JS(面向对象)代码笔记 前端学习:JS面向对象知识学习(图解) 创建类和对象 创建对象方式1调用Object函数 <body> </body> <script ...

  2. 前端学习(十七):JavaScript常用对象

    进击のpython ***** 前端学习--JavaScript常用对象 JavaScript中的所有事物都是对象:字符串.数字.数组.日期,等等 在JavaScript中,对象是拥有属性和方法的数据 ...

  3. Java开发学习(三十七)----SpringBoot多环境配置及配置文件分类

    一.多环境配置 在工作中,对于开发环境.测试环境.生产环境的配置肯定都不相同,比如我们开发阶段会在自己的电脑上安装 mysql ,连接自己电脑上的 mysql 即可,但是项目开发完毕后要上线就需要该配 ...

  4. 前端学习(三十八)vue(笔记)

    Angular+Vue+React    Vue性能最好,Vue最轻=======================================================Angular     ...

  5. 前端学习(三十六)promise(笔记)

    一个页面:  头部.用户信息.新闻列表 jquery ajax:  1.$.ajax({    url:'',    dataType:'json', }).then(res=>{    //r ...

  6. 前端学习(三十九)移动端app(笔记)

    移动端App    开发App的三种方式    Native App         原生        底层语言        java         Android        oc      ...

  7. 前端学习(三十五)模块化es6(笔记)

    RequireJs:一.安装.下载    官网: requirejs.org    Npm:  npm i requirejs二.使用    以前的开发方式的问题:        1).js 是阻塞加 ...

  8. 前端学习(三十四)对象&模块化(笔记)

    人,工人 //类的定义    function Person(name,age){ //构造函数        //工厂模式        //1.原料        //var obj = new ...

  9. 前端学习(三)css选择器(笔记)

    字体样式:    color:red:    font-size:12px:    font-weight:bold/normal;    font-style:italic/normal;    f ...

随机推荐

  1. JavaWeb(四):JDBC

    数据持久化(persistence) 把数据保存到可掉电式存储设备中以供之后使用. 大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各 ...

  2. JavaWeb(八):Filter和Listener

    一.Filter 1.1 概述 Filter 的基本功能是对 Servlet 容器调用 Servlet 的过程进行拦截,从而在 Servlet 进行响应处理的前后实现一些特殊的功能.在 Servlet ...

  3. 51nod 1028 大数乘法 V2 【FFT模板题】

    题目链接 模板题.. #include<bits/stdc++.h> using namespace std; typedef int LL; typedef double db; nam ...

  4. Redis之数据类型

    一.概念: Redis:一个开源.支持网络.基于内存.键值对存储数据库. 特点:它可以支持多种数据类型. 二.数据类型 1)Redis String 具体说明: 一般的普通的k到v一个映射是Strin ...

  5. B/S大文件断点续传

    一. 功能性需求与非功能性需求 要求操作便利,一次选择多个文件和文件夹进行上传:支持PC端全平台操作系统,Windows,Linux,Mac 支持文件和文件夹的批量下载,断点续传.刷新页面后继续传输. ...

  6. CentOS 7.5 通过kubeadm部署k8s-1.15.0

    kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,kubeadm会对集群配置方面的一些实践做调整,通过实验k ...

  7. iOS设计模式之桥接模式

    一,什么是桥接模式 定义 抽象出层次结构.上层抽象接口的职能,实现上层抽象接口的职能,层级间的通信协议(可以抽象为接口).桥接模式的目的,就是把抽象层次结构从具体的实现中分离出来,使其能够独立变更.抽 ...

  8. Drawer实现侧边栏布局

    在 Scaffold 组件里面传入 drawer 参数可以定义左侧边栏,传入 endDrawer 可以定义右侧边栏.侧边栏默认是隐藏的,我们可以通过手指滑动显示侧边栏,也可以通过点击按钮显示侧边栏.  ...

  9. Unregistering JMX-exposed beans on shutdown解决方法:

    Unregistering JMX-exposed beans on shutdown解决方法: 加入依赖如下: <dependency>   <groupId>org.spr ...

  10. C# get和set

    Day1:知识点 1.封装 自己的理解: 可复用,低耦合.就是拿过来就用 只需要关注名称,返回值,参数及参数类型,不需要知道里面怎么实现的. 字段封装的快捷键 (ctrl+r+e)  将光标放在将要封 ...