Angular(1)

1.设计原则

1.YAGNI  不要把未来需求引入当前工程   2.KISS  keep it simple and stupid  语义化标记 合理注释 符合规定的命名

3.DRY(don‘t repeat youself) 不写重复代码 善于封装

4.高内聚低耦合

内聚: 一个组件内部,不同部分之间关系  耦合不同组件之间的关系

耦合:不同组件之间的关系

5.SRP  单一责任原则,一个模块实现单一的规则

6.OCP 开闭原则

7.LCP原则 最少知识法则

2.设计模式

分为:创建型  结构型 行为行

单例模型  工厂模式   其他的自行百度

MVC  model 模型数据(变量)  View 视图(html css)  Control 控制器(js方法等)

适合数据操作比较频繁的应用程序,数据双向绑定,依赖注入,模块化设计  ng 开源的js框架

3.语法

{{表达式}}  在当前位置输出当前表达式的结果 ,需要ng-app

常用指令

1.ng-app:指定作用范围 载入

2. ng-init初始化变量

3.ng-bind 指令中表达式值输出当前元素的innerHTML中

4.ng-repeat:遍历数组,对象—> 实质上遍历对象实际是结果 如果遍历是重复数组 加上遍历方式eg:

数组:ng-repeat="m in cas track by $index"
对象:ng-repeat="(key,value) in cas"(得到key和value)
<p ng-init="student={name:‘liuyifei‘,bra:‘D‘}"></p>
<span ng-repeat="key in student" ng-bind="key"></span>
结果:liuyifeiD

5.ng-if 判断  是否在dom中显示还是移除

6.ng-show  是否显示  7.ng-Checked 8.ng-Style 9.ng-Disabled…..

<ANY ng-if=”表达式”> </ANY>

4.模块mvc

声明:angular.module(“mok”,[依赖列表])

注册:ng-app=“名字”

声明控制器:app.controller(”控制器名字“,方法func)

使用控制器:<ANY ng-controller =”控制器名称”> </ANY>

操作模型数据:$scope定义模型数据 建立了模型数据和视图的桥梁

<!DOCTYPE html>
<html ng-app="myapp" lang="en"><!--模块注册调用-->
<head>
    <meta charset="UTF-8">
    <title>MVCdemo</title>
    <script src="js/angular.js"></script>
</head>
<body>
<!--使用控制器 作用域仅限于标签内 V-->
<p ng-controller="myCtrl">{{name}}</p>
<script>
    var app = angular.module("myapp", [‘ng‘]);//模块申明
    app.controller(‘myCtrl‘, function ($scope) {  //控制器申明 C
        console.log(‘in myCtrl function‘);
        $scope.name = "zheng" ;   //模型数据 M
    })
</script>
</body>
</html>

5.一个添加删除的demo

<!DOCTYPE html>
<html lang="en" ng-app="app-module">
<head>
    <meta charset="UTF-8">
    <title>gouwuche </title>
    <script src="js/angular.js"></script>
</head>
<body ng-controller="ctr">
单价:<input type="text" id="v1">
数量:<input type="text" id="v2">
<button ng-click="add()">添加</button>
<table >
    <thead>
        <tr>
            <th>单价</th>
            <th>数量</th>
            <th>小计</th>
            <th>删除</th>
        </tr>
    </thead>
    <tbody>
        <tr ng-repeat="(key,row) in data">
            <td >{{row.sprice}}</td>
            <td >{{row.num}}</td>
            <td >{{row.sprice*row.num}}</td>
            <td ><button ng-click="ndelete(key)"  target1="key">删除</button></td>
        </tr>
    </tbody>
</table>
<script>
    var app=angular.module("app-module",[‘ng‘]);
    app.controller("ctr",function ($scope) {

        $scope.data=[{sprice:3,num:20},{sprice:4,num:20},{sprice:5,num:20},{sprice:6,num:20}];
        $scope.add=function () {
            $scope.data.push({sprice:v1.value,num:v2.value});
            console.log($scope.a);
            console.log($scope.b);
        };
        $scope.ndelete=function (key) {
           $scope.data.splice(key,1);
        };
    });
</script>
</body>
</html>
时间: 2024-10-09 16:10:07

Angular(1)的相关文章

前端框架之Angular (一)

一.Angular特点: 1.双向数据绑定,主打卖点 2.MVVM 模型,把视图和逻辑分开 3.依赖注入 个人感觉,在Angular中,视图对应 HTML 模板,视图逻辑对应directive 和 controller. 二.模块 Angular 中通过模块来管理命名空间,可以通过不同的模块来隔离不同页面的逻辑.所虽然它称作 "module",但其实更像是一个命名空间,或者叫一个包. 通过 angular.module("name", [/依赖/]) 来声明一个模块

Angular(03)-- lint风格规范和WebStorm小技巧

在开始讲 Angular 各个核心知识点之前,想先来讲讲开发工具 WebStorm 的一些配置以及相应配置文件如 tslint.json 的配置. 因为我个人比较注重代码规范.代码风格,而对于这些规范,我只有一个观点:一切需要依赖开发人员的主观意识去遵守的规范都没有多大意义. 以前做 Android 开发时会借助 AndroidStudio 来强制遵守一些规范,现在前端项目我用的是 WebStorm 开发,这两个开发工具本质上同源,所以很多功能都差不多. 那么,这篇就来讲一讲,如何对 WebSt

angular(3)服务 --注入---自定义模块--单页面应用

ng内部,一旦发生值改变操作,如$scope.m=x,就会自动轮询$digest队列,触发指定的$watch,调用其回调函数,然后修改dom树. 干货:https://github.com/xufei/blog/issues/10 1.ng提供了许多内置的服务,例如常用的$scope\$http\$window\$location等. http:POST请求: var app = angular.module('myApp', ['ng']); app.run(function($http){

angular(一)路由的配置

本篇文章是最近在公司里做项目的时候,尝试配置路由的过程.由于头尾,和路由主体,包括控制器组长都已配置好,我这里只是单纯的写一些配置单个副页面的过程.大家肯定会有看不懂的地方,后续会陆续更新完整的配置全套路由的方法.如果想看完整的配套路由方法,抱歉,让你们失望了,我也是个程序媛小白一枚~~~. 好,现在切入正题:我工作的步骤如下: 一.分别在css,js,tpls文件夹里面比照同事建立文件夹,然后将原静态页面的css,HTML等导入: ①首先是css,直接复制粘贴原有静态页面的css到新建css文

前端框架之Angular(三)

这节说一下Angular的脏检查.功能和服务. 一.脏检查 Angular 内部通过 dirty check 来跟踪数据变化,这是双向数据绑定的实现基础. 所谓脏检查,就是 angular 会给每一个数据绑定一个 watcher,当到"特定检查阶段"时,angular就会逐个询问 watcher 它对应的数据有没有发生变化,如果有,则运行对应的监视器.直到没有任何脏数据为止.这个过程称为 digest 循环. 注意,并不是有一个定时线程来不停做脏检查.Angular 只有当特定的事件发

从flask视角理解angular(三)ORM VS Service

把获取模型数据的任务重构为一个单独的服务,它将提供英雄数据,并把服务在所有需要英雄数据的组件间共享. @Injectable() export class HeroService { getHeroes(): void {} // stub } HeroService可以从任何地方获取Hero数据 —— Web服务.本地存储或模拟数据源. Service不是new()出来的 文档里给出了李菊福的理由: 我们的组件得弄清楚该如何创建HeroService. 如果有一天我们修改了HeroServic

Angular ( 一 ) angular的安装

1. 全局安装angular 脚手架工具 npm install -g @angular/cli 2. 打开到创建目录: 3. 创建项目 ng new my-app 4. 打开项目 5. 安装依赖 npm install 6. 运行项目 ng serve --open 原文地址:https://www.cnblogs.com/liuyunqi/p/9317827.html

AngularJS学习笔记(一)——一些基本知识

(一)Hello Angular index.html <!DOCTYPE html> <html ng-app> <head> <title>Test AngularJS</title> <meta charset="utf-8"> </head> <body> <div ng-controller="HelloAngular"> <p>{{gr

HTTP协议探究(一)

一 复习与目标 1 复习 序章主要用WrieShark抓包HTTP报文 复习了TCP协议 讲述了TCP协议与HTTP之间的关系 HTTP1.1更新原因:HTTP1.0一次TCP连接只能发送一次HTTP报文等 HTTP2.0更新原因:HTTP的报头太大.多路复用问题等(HTTP2.0未来研究) 2 目标 由于大家都有一定的基础(包括我),所以并不会照着书本一节一节地进行,所以这一节重点讲一下缓存相关的问题. 缓存的好处 缓存相关的状态码 缓存相关的首部 缓存的处理步骤 二 为什么要有缓存? 减少冗