angular中的全局方法和指令介绍1

### 复习并总结Angular开发流程 0.下载angular,暴力angular,找到js拖拽过来,npm下载 1.引入 2.在要控制的标签上写上ng-app 3.写controller,告诉angular哪部分dom结构有哪个controller去接管 4.在controller里面处理数据和具体业务逻辑 5.绑定值或文本,ng-model {{}}表达式 ### 复习MVC - MVC是一种设计思想,它是约定了程序的结构应该是怎么。 - 每一个组成原件都会有一个明确的职责。 - 提高代码的结构和可维护性; ### 前端的mvc ## mvvm mv* ### scope![ scope](./pic/angular-mvvm.png) ### ViewModel - scopeMVVMVM scope在Angular中大量使用甚至盖过了C(控制器)的概念,所以很多人把Angular称之为MVVM框架 ## Angular全局Api使用 - 数据比较API + angular.isArray() 判断给定的对象是否为数组。 + angular.isDate() 判断给定的对象是否为日期类型。 + angular.isDefined() 判断给定的对象是否定义过。 + angular.isElement() 判断给定的对象是否为一个DOM元素。 + angular.isFunction() 判断给定的对象是否为一个函数。 + angular.isNumber() 判断给定的对象是否为数字。 + angular.isObject() 判断给定的对象是否为object类型。 + angular.isString() 判断给定的对象是否为字符串。 + angular.isUndefined() 判断给定的对象是否没有定义过(与angular.isDefined()相反)。 + angular.equals() 判断给定的两个对象是否相等。 - 其他API使用 + angular.lowercase() 将字符串转换为小写形式。 + angular.uppercase() 将字符串转换为大写形式。 + angular.copy() 深拷贝一个对象或数组。 + angular.forEach() 遍历对象或数组中的每一个元素并执行一个函数。

    var values = {name: 'feifei', gender: 'zhuzhu'};
    angular.forEach(values, function(value, key) {
    });

    var objs =[1,2];
    angular.forEach(objs, function(data,index,array){
        console.log(data);
        console.log(index);
        console.log(array);
    });
## 模块 ### 控制器的作用 - 初始化属性 - 暴露属性或者行为 - 监视数据变化 scope.name=; scope.$watch(‘name’,function (newVal,oldVal) { console.log(newVal); console.log(oldVal); }) ### 控制器代码压缩问题 - 当代码进行js压缩时候controller里面的内容会被当成变量替换掉, 为了防止这个问题发生在controller中出现 controller(‘myCtrl’,[‘ scop,function( scope){}]) ### 控制器的多种写法 - 1.简单写法 app.controller(‘myCtrl’,function(){}) - 2.早期使用 (angular-1.2.29版本) function myController( scope)$scope.name=angular使;3.fuctionfunctionotherCtrl( scope) { scope.name=’123’;
    }
    app.controller(‘myCtrl’,otherCtrl)
 - 4. fuction写在外面(写在外面不能被压缩)
   function otherCtrl(otherscope) {
        otherscope.name=’123’;
    }
    //依赖注入
    otherCtrl.
inject=[' scope];// inject app.controller(‘myCtrl’,otherCtrl) - 5. 面向对象方法使用
{{scope.name}}
- 1.控制器的function不写改为引用function app.controller('myCtrl',demoCtrl);
- 2.创建一个面向对象的function ` function demoCtrl() {
        this.name='123';
    } `
- 3.使用的时候添加 ` as scope ` ng-controller="myCtrl as scope"
#依赖注入 - 没事你不要来找我,有事我会去找你。 - 原理 框架在调用方法的过程中通过获取到传递的参数,然后框架内部将方法toString处理以后, 再通过正则表达式将其获取到然后依次实例化。 ###控制器继承
var app=angular.module('mainApp',[]); app.controller('SelfCtrl', function( scope)$scope.foo(););app.controller(ParentCtrl,function( scope) { $scope.foo=function(){ console.log(123); } }); ###控制器之间父子通信 1.从父控制器传子控制器
click me

指令

  • 在 AngularJS 中将前缀为 ng- 这种属性称之为指令,其作用就是为 DOM 元素调用方法、定义行为绑定数据等
  • 简单说:当一个 Angular 应用启动,Angular 就会遍历 DOM 树来解析 HTML,根据指令不同,完成不同操作

  • ng-bind

    • 用来解决表达式闪烁问题
    • <p ng-bind="数据模型"></p>替代了{{数据模型}}

      {{name}}

    注意:只能够在双标签中使用ng-bind指令

  • ng-cloak

    • 用来解决表达式闪烁问题
    • 写一个样式使页面的元素隐藏

      .ng-cloak{
      display: none;
      }
    • <p class="ng-cloak">{{name}}</p>
    • 利用angular在加载会移除页面上所以名为ng-cloak的样式名的特性。
  • 页面安全的问题
    直接编写一些

    document.write('
    <div ng-switch="name">
            <div ng-switch-when="小明">我是小明</div>
            <div ng-switch-when="小红">我是小红</div>
            <div ng-switch-when="小月">我是小月</div>
    </div>

其他常用指令

  • ng-checked:
    • 单选/复选是否选中,是单向数据绑定
  • ng-selected:
    • 是否选中
  • ng-disabled:
    • 是否禁用
  • ng-readonly:
    • 是否只读

常用事件指令

不同于以上的功能性指令,Angular还定义了一些用于和事件绑定的指令:

  • ng-blur:失去焦点
  • ng-focus:获得焦点
  • ng-change:改变事件
  • ng-click: ng-click=”add()”
  • ng-dblclick:双击事件
  • ng-submit: 表单提交事件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Angular,要注册一个全局模块,您需要在根模块(通常是 AppModule)进行注册。以下是一些步骤来注册一个全局模块: 1. 创建一个名为`global.module.ts`的全局模块文件,并在其定义您要注册的全局模块。 ```typescript import { NgModule, APP_INITIALIZER } from '@angular/core'; import { CommonModule } from '@angular/common'; @NgModule({ declarations: [ // 在这里声明全局组件、指令、管道等 ], imports: [ CommonModule ], exports: [ // 在这里导出全局组件、指令、管道等 ], providers: [ // 在这里提供全局服务等 { provide: APP_INITIALIZER, useFactory: globalModuleInitializer, multi: true } ] }) export class GlobalModule { } export function globalModuleInitializer() { return () => { // 在这里执行任何需要在应用程序启动时初始化的操作 // 例如:全局配置、设置等 // 可以返回 Promise 或 Observable,确保初始化完成后再继续应用程序的启动 return new Promise<void>((resolve) => { // 执行初始化操作 // ... resolve(); }); }; } ``` 2. 在根模块(AppModule)导入并添加`GlobalModule`到`imports`数组。 ```typescript import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; // 导入GlobalModule import { GlobalModule } from './global.module'; @NgModule({ declarations: [ // 在这里声明根组件等 ], imports: [ BrowserModule, GlobalModule // 将GlobalModule添加到imports数组 ], providers: [], bootstrap: [AppComponent] }) export class AppModule { } ``` 现在,您的全局模块已经注册,并且其的组件、指令、管道和服务可以在应用程序的任何地方使用。 请注意,`APP_INITIALIZER`提供者可以用来在应用程序启动时执行一些初始化操作。您可以根据需要在`globalModuleInitializer`函数进行自定义操作。 希望这能帮到您!如果您还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ITzhongzi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值