AngularJS2 笔记

 

  • AngularJS2 笔记
    • 元数据
      • declarations
      • imports
      • exports
      • forRoot
      • providers
    • 数据绑定
      • 数据绑定方式
      • 原生 hidden 属性绑定数据
      • ngFor指令trackBy
    • 父组件子组件通讯
      • input装饰器
      • 父组件监听子组件的事件
      • 本地变量通讯
      • 子组件获取父组件实例
        • 找到已知类型的父组件
        • 未知父组件类型
    • 管道
      • 自定义管道
      • 纯管道非纯管道
    • 指令
      • 结构指令
    • 依赖注入
      • 注入到派生类
      • 限定方式的依赖注入
      • Provider注册方式
      • 类 Provider
      • 值Provider
      • 别名Provider
      • 工厂Provider
    • Angular官方建议风格标准

 

元数据

declarations

用于引入视图类(View Class)(指令、组件、管道), 只有可声明的类才能加到模块的declarations列表中。

不要声明:

  • 已经在其它模块中声明过的类。无论它来自应用自己的模块(@NgModule)还是第三方模块。
  • 从其它模块中导入的指令。例如,不要声明来自@angular/forms的FORMS_DIRECTIVES。
  • 模块类
  • 服务类
  • 非Angular的类和对象,比如:字符串、数字、函数、实体模型、配置、业务逻辑和辅助类。

imports

引入该模块依赖的其他模块或路由 
- 要从@angular/common中导入CommonModule才能访问Angular的内置通用指令,比如NgIf和NgFor。 
- 如果你的组件有[(ngModel)]双向绑定表达式这类表单指令,就要从@angular/forms中导入FormsModule。 
- 表单指令模块包括FormsModule(包含NgModel等常用表单指令)、ReactiveFormsModule(包含FormControlDirective、FormGroupDirective等和InternalFormsSharedModule)、InternalFormsSharedModule(包含SelectControlValueAccessor等,无需主动使用,包含RequiredValidator等内置验证指令) 
- BrowserModule提供了启动和运行浏览器应用的那些基本的服务提供商。(只能在根模块AppModule中导入BrowserModule。) BrowserModule还从@angular/common中重新导出了CommonModule,这意味着AppModule中的组件也同样可以访问那些每个应用都需要的Angular指令,如NgIf和NgFor。 
- Angular不允许模块之间出现循环依赖,所以不要让模块’A’导入模块’B’,而模块’B’又导入模块’A’。

exports

导出那些其它模块希望在自己的模板中引用的可声明类(视图类)。这些也是你的公开类。 如果你不导出某个类,它就是私有的,只对当前模块中声明的其它组件可见。 
可以导出任何可声明类(组件、指令和管道),而不用管它是声明在当前模块中还是某个导入的模块中。 
可以重新导出整个导入过的模块,这将导致重新导出它们导出的所有类。模块甚至还可以导出它未曾导入过的模块

forRoot()

静态方法forRoot()是一个约定,它可以让开发人员更轻松的配置模块的提供商。 
RouterModule.forRoot返回一个ModuleWithProviders对象。 我们把这个结果添加到根模块AppModule的imports列表中。 
只能在应用的根模块AppModule中调用并导入.forRoot的结果。 在其它模块中导入它,特别是惰性加载模块中,是违反设计目标的并会导致一个运行时错误。 
RouterModule也提供了静态方法forChild,用于配置惰性加载模块的路由。

providers

指定模块依赖的服务 
列在引导模块的@NgModule.providers中的服务提供商具有全应用级作用域。 往NgModule.providers中添加服务提供商将导致该服务被发布到整个应用中。 
当我们导入一个模块时,Angular就会把该模块的服务提供商(也就是它的providers列表中的内容)加入该应用的根注入器中。 
和启动时就加载的模块中的提供商不同,惰性加载模块中的提供商是局限于模块的。

数据绑定

数据绑定方式

  • 属性绑定和插值表达式 组件类-> 模板
<!-- 插值表达式 -->
<img src="{{imgUrl}}" /><!-- 属性绑定 -->
<img [src]="imgUrl" /> 
  • 事件绑定:模板 -> 组件类
 <a (click)="doClick($event)">点我</a>
  • 双向绑定: 模板 <-> 组件类
<input type="text" [(ngModel)]="name" />
  • 安全导航操作符 ( ?. ) 
    Angular 的安全导航操作符 (?.) 是一种流畅而便利的方式,用来保护出现在属性路径中 null 和 undefined 值。 
    下例中,当currentHero为空时,保护视图渲染器,让它免于失败。否则会报错 
    The current hero’s name is {{currentHero?.name}}

原生 hidden 属性绑定数据

通过 [hidden]=”expression” 是用CSS 来控制 DOM 元素的显示状态, 就是简单的把元素设置成 display: none来控制元素显示状态,很容易意外的被其他样式覆盖掉。 
我们通常使用 *ngIf 切换元素存在状态来完成相同目标:

<div *ngIf="showGreeting">Hello, there!
</div>

和原生 hidden 属性不同, angular2 中的 *ngIf 不受样式约束。无论你写了什么样的CSS,都是安全的。 
*ngIf 并不是控制元素的显示状态,而是直接通过从模版中增加/删除元素该元素来达成显示与否这一效果的。

ngFor指令&&trackBy

<!--可获取index索引变量-->
<div *ngFor="let contact of contacts; let i= index">{{i+1}} - {{contact.name}}</div><!--根据id检查属性变化,若变化则更新DOM,未变化则留下DOM,避免重复渲染-->
<div *ngFor="let contact of contacts; trackBy: trackByContacts">{{contact.name}}</div>//trackByContacts(index:number, contact:Contact){return contact.id;
}

父组件、子组件通讯

@input装饰器

@input装饰器定义 输入型属性,把数据从父组件传到子组件

父组件:

@Component({selector: 'parent',template: `<child [major]="major"></child>`
})
export class HeroParentComponent {major: number = 1;
}

子组件:

@Component({selector: 'child',template: `<h3>Version {{major}}.{{minor}}</h3>`
})
export class ChildComponent implements OnChanges {@Input() major: number;}

父组件监听子组件的事件

子组件暴露一个EventEmitter属性,当事件发生时,子组件利用该属性emits(向上弹射)事件。父组件绑定到这个事件属性,并在事件发生时作出回应。子组件的EventEmitter属性是一个输出属性。 
子组件

import { Component, EventEmitter, Input, Output } from '@angular/core';@Component({selector: 'child',template: `<h4>{{name}}</h4><button (click)="vote(true)">Agree</button><button (click)="vote(false)">Disagree</button>`
})
export class ChildComponent {@Input()  name: string;@Output() onVoted = new EventEmitter<boolean>();vote(agreed: boolean) {this.onVoted.emit(agreed);}
}

父组件

import { Component } from '@angular/core';
@Component({selector: 'parent',template: `<h2>Should mankind colonize the Universe?</h2><h3>Agree: {{agreed}}, Disagree: {{disagreed}}</h3><child (onVoted)="onVoted($event)"></child>`
})
export class ParentComponent {agreed = 0;disagreed = 0;onVoted(agreed: boolean) {agreed ? this.agreed++ : this.disagreed++;}
}

点击按钮会触发true或false(布尔型有效载荷)的事件。 
父组件绑定了一个事件处理器(onVoted()),用来响应子组件的事件($event)并更新一个计数器。

本地变量通讯

在父组件模板里,新建一个本地变量来代表子组件,然后利用这个变量来读取子组件的属性和调用子组件的方法,如下例所示:

import { Component } from '@angular/core';
import { ChildComponent }  from './child.component';
@Component({selector: 'parent',template: `<button (click)="child.start()">Start</button><button (click)="child.stop()">Stop</button><div class="seconds">{{child.seconds}}</div><child #child></child>`
})
export class ParentComponent { }

本地变量#child,这个本地变量方法是个简单便利的方法。但是它也有局限性,因为父组件-子组件的连接必须全部在父组件的模板中进行。父组件本身的代码对子组件没有访问权。 
如果父组件的需要读取子组件的属性值或调用子组件的方法,就不能使用本地变量方法。 
当父组件需要这种访问时,可以把子组件作为ViewChild,注入到父组件里面:

import { AfterViewInit, ViewChild } from '@angular/core';
import { Component }                from '@angular/core';
import { ChildComponent }  from './child.component';
@Component({selector: 'parent',template: `<button (click)="start()">Start</button><button (click)="stop()">Stop</button><div class="seconds">{{ seconds() }}</div><child></child>`,styleUrls: ['demo.css']
})
export class ParentComponent implements AfterViewInit {@ViewChild(ChildComponent)private childComponent: ChildComponent;seconds() { return 0; }ngAfterViewInit() {setTimeout(() => this.seconds = () => this.childComponent.seconds, 0);}start() { this.childComponent.start(); }stop() { this.childComponent.stop(); }
}

子组件获取父组件实例

找到已知类型的父组件

//父组件
@Component({selector: 'parent',template: `<div class="a"><h3>{{name}}</h3><child></child></div>`,
})
export class ParentComponent
{name= 'Alex';
}//子组件
import {ParentComponent} from './parent.component';
@Component({selector: 'child',template: `<div class="c"><h3>Cathy</h3>{{parent ? 'Found' : 'Did not find'}} Alex via the component class.<br></div>`
})
export class ChildComponent {constructor( @Optional() public parent: ParentComponent ) { }
}

未知父组件类型

通过类-接口找到父组件

//创建Parent抽象类
export abstract class Parent {name:string;
}//父组件
//用useExisting注入ParentComponent
//ParentComponent引用了自身,造成循环引用,使用forwardRef打破了该循环
@Component({selector: 'parent',template: `<div class="a"><h3>{{name}}</h3><child></child></div>`,providers:[{provide: Parent, useExisting: forwardRef(() => ParentComponent)}]
})
export class ParentComponent implements Parent
{name= 'Alex';
}//子组件
//通过Parent标识找到父组件实例
export class ChildComponent {name= 'Child';constructor( @Optional() public parent: Parent ) { }
}

Angular的forwardRef()函数建立一个间接地引用,Angular可以随后解析。

管道

自定义管道

import { Pipe, PipeTransform } from '@angular/core';@Pipe({name: 'myNewPipe'
})
export class MyNewPipePipe implements PipeTransform {
//必须实现接口的transform方法transform(value: string, args?: any): any {switch(value){case 'male':return '男';case 'female':return '女';default:return '';}}
}

纯管道&&非纯管道

  • 纯管道
@Component({selector:'pure-pipe-demo',template:`<div><p>{{dateObj|date}}</p><p>{{dateStr|date}}</p></div>`
})
export class PurePipeDemoComponent{dateObj:date=new Date('2017-07-17 20:00:00');dateStr:string='2017-07-17 20:00:00';constructor(){setTimeout(()=>{this.dateObj.setMonth(11);this.dateStr='2017-12-17 20:00:00';},2000);}
}
//页面显示结果:
最初:2017-07-17 20:00:00 Monday
2017-07-17 20:00:00 Monday两秒后:2017-07-17 20:00:00 Monday
2017-12-17 20:00:00 Sunday

以上使用内置管道date,模板中日期都改为12月,确只有dateStr在页面上发生了变化。 
因为,date管道默认为纯管道,只有当输入值发生纯改变(基本数据类型值变化或对象引用改变)时才会调用管道更新变化的值。 
应用纯管道可以优化性能,忽略对象内部属性变化,不会频繁变化检测;但不一定适用所有的场景。

  • 非纯管道
//管道元数据的pure属性定义为false(默认为true),则是非纯管道
@Pipe({name: 'myNewPipe',pure:false
})

Angular组件的每个变化检测周期都会调用非纯管道,每个周期都会去检测并执行transform方法

指令

内置指令包括通用指令、路由指令、表单指令。 
表单指令模块包括FormsModule(包含NgModel等常用表单指令)、ReactiveFormsModule(包含FormControlDirective、FormGroupDirective等和InternalFormsSharedModule)、InternalFormsSharedModule(包含SelectControlValueAccessor等,无需主动使用,包含RequiredValidator等内置验证指令)。

结构指令

结构指令指可以改变DOM树结构的指令,如内置的NgIf。 
自定义结构指令,类似NgIf:

import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';/*** Add the template content to the DOM unless the condition is true.*/
@Directive({ selector: '[myUnless]'})
export class UnlessDirective {private hasView = false;//TemplateRef用来访问组件的模板//ViewContainerRef作为视图内容的渲染器,可将模板内容插入DOMconstructor(private templateRef: TemplateRef<any>,private viewContainer: ViewContainerRef) { }
//根据绑定结果增加或者删除模板内容@Input() set myUnless(condition: boolean) {if (!condition && !this.hasView) {this.viewContainer.createEmbeddedView(this.templateRef);this.hasView = true;} else if (condition && this.hasView) {this.viewContainer.clear();this.hasView = false;}}
}
//模板中使用
<p *myUnless="true">
xxxx
</p>

使得自定义指令可以响应用户操作,在事件处理函数上添加@HostListener装饰器:

import { Directive, ElementRef, HostListener, Input } from '@angular/core';
@Directive({selector: '[myHighlight]'
})
export class HighlightDirective {constructor(private el: ElementRef) { }@HostListener('mouseenter') onMouseEnter() {this.highlight('yellow');}@HostListener('mouseleave') onMouseLeave() {this.highlight(null);}private highlight(color: string) {this.el.nativeElement.style.backgroundColor = color;}

依赖注入

模块中注入的服务作用域是应用程序级的,在@NgModule里注册的服务默认可在整个应用程序中可用;在根组件注入的服务是组件级的,在根组件和其子组件中共享一个服务实例。 
延迟加载的模块是一个特例,延迟加载使得应用程序在启动时没有载入模块,而是结合路由配置,在需要时才动态加载相应模块,创建新的注入器,注入的依赖只在模块内部可见。 
在根组件还是子组件中进行服务注入呢? 取决于想让注入的依赖服务具有全局性还是局部性,每个注入器总是将它提供的服务维持单例。

注入到派生类

当编写一个继承自另一个组件的组件时,要格外小心。如果基础组件有依赖注入,必须要在派生类中重新提供和重新注入它们,并将它们通过super()构造函数传给基类。因为派生类不能继承父类组件的注入器

//父类组件
@Component({selector: 'unsorted-heroes',template: `<div *ngFor="let hero of heroes">{{hero.name}}</div>`,providers: [HeroService]
})
export class HeroesBaseComponent implements OnInit {constructor(private heroService: HeroService) { }heroes: Array<Hero>;ngOnInit() {this.heroes = this.heroService.getAllHeroes();this.afterGetHeroes();}// Post-process heroes in derived class override.protected afterGetHeroes() {}
}//派生类组件
@Component({selector: 'sorted-heroes',template: `<div *ngFor="let hero of heroes">{{hero.name}}</div>`,providers: [HeroService]
})
export class SortedHeroesComponent extends HeroesBaseComponent {constructor(heroService: HeroService) {super(heroService);}protected afterGetHeroes() {this.heroes = this.heroes.sort((h1, h2) => {return h1.name < h2.name ? -1 :(h1.name > h2.name ? 1 : 0);});}
}

ps: Angular官方推荐最佳实践是让构造函数保持简单。它们应该只用来初始化变量,业务逻辑放到ngOnInit中处理。这个规则会帮助我们在测试环境中放心的构造组件,以免在构造它们时,无意做了一些非常戏剧化的动作(比如连接服务)。

限定方式的依赖注入

当组件注入一个依赖时,Angular从该组件本身的注入器开始,沿着依赖注入器的树往上找(从当前组件向父级组件),直到找到第一个符合要求的提供商。如果Angular不能在这个过程中找到合适的依赖,它就会抛出一个错误。

@Optional可以兼容依赖不存在的情况;@Host可以限定查找规则,明确实例初始化的位置。 
当Angular找不到依赖时,@Optional装饰器会告诉Angular继续执行。Angular把此注入参数设置为null(而不用默认的抛出错误的行为)。 
@Host装饰器将把往上搜索的行为截止在宿主组件(如果一个组件注入了依赖,那么这个组件就是这个依赖项的宿主组件。但当这个组件被嵌入进一个父组件后,这个父组件就变成了该依赖项的宿主组件。) 
例,父组件为宿主组件的情况:

//父类组件
@Component({selector: 'contact-list',template: `
<h1>Contact List</h1>
<contact-a></contact-a>
`,providers: [LoggerService]
})
export class ContactListComponent {constructor(logger: LoggerService) {logger.logInfo('Creating ContactListComponent');}
}//子类组件
@Component({selector: 'contact-a',template: `
<div>ContactA</div>
`
})
export class ContactAComponent {constructor(@Host@Optionallogger: LoggerService) {logger.logInfo('Creating ContactAComponent');}
}

Provider注册方式

类 Provider

providers:[
{ provide: HeroService,   useClass:    HeroService },
{ provide: LoggerService, useClass:    DateLoggerService }
]//第一个提供商是展开了语法糖的完整形式,是一个典型情况的展开。
//缩写形式:providers:[HeroService]//第二种提供商使用DateLoggerService来满足LoggerService。该LoggerService在AppComponent级别已经被注册。当这个组件要求LoggerService的时候,它得到的却是DateLoggerService服务。DateLoggerService从LoggerService继承;它把当前的日期/时间附加到每条信息上。@Injectable()
export class DateLoggerService extends LoggerService
{logInfo(msg: any)  { super.logInfo(stamp(msg)); }logDebug(msg: any) { super.logInfo(stamp(msg)); }logError(msg: any) { super.logError(stamp(msg)); }
}function stamp(msg: any) { return msg + ' at ' + new Date(); }

值Provider

在实际项目中,依赖的对象不一定是类,也可以是常量、字符串、对象等其他数据类型,可以方便用在全局变量、系统相关参数配置等场景中。

const someHero = new Hero(42, 'Magma', 'Had a great month!', '555-555-5555');
//值Provider依赖的值(useValue)必须在当前或providers元数据配置之前定义。
......providers:[{ provide: Hero, useValue: someHero },//对象{ provide: TITLE, useValue: 'Hero of the Month' }//字符串
]

别名Provider

别名Provider可以在一个Provider中配置多个标识,其对应的对象指向同一个实例。 
假如应用已有一个日志服务OldLoggerService,现在已经开发了有相同接口的新版服务NewLoggerService,考虑到重构的代价,并不想替换OldLoggerService服务被使用的地方。此时让新旧服务标识同时使用:

providers:[{ provide: NewLoggerService, useClass: NewLoggerService },{ provide: OldLoggerService, useClass: NewLoggerService }
]

// 但上述两个NewLoggerService 对应不同的实例 
// 可以使用useExisting使得多个标识指向同一个实例

providers:[{ provide: NewLoggerService, useClass: NewLoggerService },{ provide: OldLoggerService, useExisting: NewLoggerService }
]

工厂Provider

有时候依赖对象是不明确且动态变化的,可能需要根据运行环境、执行权限来生成。工厂Provider通过暴露一个工厂方法,返回最终依赖的对象。 
假设这样一个场景:有些联系人的信息是保密的,只有特定权限的人才能看到,所以需要对每个登录用户进行鉴权。可以在构造函数中通过一个布尔值来判断是否有权限并返回对应的服务,在返回的服务中根据这个布尔值来判断是否显示联系人信息,实例代码如下:

let contactServiceFactory =(_logger:LoggerService, _userService:UserService)=>{return new contactService(_logger,_userService.user.isAuthorized);
}
export let contactServiceProvider=
{ provide: ContactService, useFactory:  contactServiceFactory,  deps: [LoggerService, UserService] };//useFactory声明Provider是一个工厂方法;deps是一个数组属性,指定所需要的依赖,可注入到工厂方法中

Angular官方建议风格标准

  • 坚持用const声明变量,除非它们的值在应用的生命周期内会发生变化。告诉读者这个值是不可变的。

  • 考虑 把常量名拼写为小驼峰格式。小驼峰变量名 (heroRoutes) 比传统的大写蛇形命名法 (HERO_ROUTES) 更容易阅读和理解。

  • 坚持使用小写驼峰命名法来命名属性和方法。避免为私有属性和方法添加下划线前缀。

  • 坚持在第三方导入和应用导入之间留一个空行。

  • 坚持命名文件到这个程度:看到名字立刻知道它包含了什么,代表了什么。坚持文件名要具有说明性,确保文件中只包含一个组件。

  • 坚持尽可能保持扁平的目录结构。

  • 坚持为应用中每个明显的特性创建一个 Angular 模块。坚持把特性模块放在与特性区同名的目录中(例如app/heroes)。

  • 坚持在shared目录中创建名叫SharedModule的特性模块,坚持在共享模块中声明那些可能被特性模块引用的可复用组件、指令和管道

  • 避免 在共享模块中提供服务。服务通常是单例的,应该在整个应用或一个特定的特性模块中只有一份

  • 坚持在SharedModule中导入所有模块都需要的资产(例如CommonModule和FormsModule)。坚持从SharedModule中导出其它特性模块所需的全部符号

  • 坚持在core目录下创建一个名叫CoreModule的特性模块,坚持把要共享给整个应用的单例服务放进CoreModule中(例如ExceptionService和LoggerService)。只在应用启动时从AppModule中导入它一次,以后再也不要导入它,避免在AppModule之外的任何地方导入CoreModule

  • 坚持把惰性加载特性下的内容放进惰性加载目录中。 典型的惰性加载目录包含路由组件及其子组件以及与它们有关的那些资产和模块。避免让兄弟模块和父模块直接导入惰性加载特性中的模块。

  • 坚持当超过 3 行时,把模板和样式提取到一个单独的文件。

  • 坚持指定相对于模块的 URL ,给它加上./前缀。./前缀是相对URL的标准语法,不必依赖Angular的特殊处理,如果没有前缀则不行。

  • 坚持把@Input()或者@Output()放到所装饰的属性的同一行。避免除非有重要目的,否则不要为输入和输出指定别名。

  • 坚持把属性成员放在前面,方法成员放在后面。坚持先放公共成员,再放私有成员,并按照字母顺序排列。

  • 坚持在组件中只包含与视图相关的逻辑。所有其它逻辑都应该放到服务中。坚持把可重用的逻辑放到服务中,保持组件简单,聚焦于它们预期目的。

  • 坚持命名事件时,不要带前缀on。坚持把事件处理器方法命名为on前缀之后紧跟着事件名

  • 坚持把表现层逻辑放进组件类中,而不要放在模板里。坚持当你需要有表现层逻辑,但没有模板时,使用属性型指令。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. angularJs四大特征

    AnjularJs的四大特征 1、MVC模式 2、双向绑定 3、依赖注入 4、模块化设计 下面我们就分别说说这四大特征&#xff1a; 1、MVC模式 Angular遵循软件工程的MVC模式,并鼓励展现&#xff0c;数据&#xff0c;和逻辑组件之间的松耦合.通过依赖注入&#xff08;dependency inj…...

    2024/5/7 11:31:13
  2. 如何使用stripe_使用AngularJS,Stripe和Stamplay创建Book Club应用

    如何使用stripe本文由Stamplay赞助。 感谢您支持使SitePoint成为可能的赞助商。 作为前端开发人员&#xff0c;我经常发现自己使用Angular和React之类的框架为自己的副项目创建了丰富的UI&#xff0c;但是有时候您的应用需要数据&#xff0c;持久性&#xff0c;业务逻辑&#…...

    2024/5/7 11:10:49
  3. Angular7教程-1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16

    不成功&#xff1a;cnpm install node-sasslatest 不成功python&#xff1a;安装python&#xff1a;https://blog.csdn.net/lyj_viviani/article/details/51763101 无法加载&#xff1a;https://www.cnblogs.com/xiaofenguo/p/11511789.html module的知识&#xff1a; http…...

    2024/5/7 10:30:00
  4. IT培训班到底有没有必要参加?

    如果你发了个帖子&#xff0c;说你想学前端&#xff08;或是编程&#xff09;&#xff0c;那么你的到的回复&#xff0c;将会是这样的&#xff1a; 1、看书自学 2、读别人代码&#xff0c;多动手写代码 3、找一个公司实习 4、去看网站里的免费视频 5、去看免费的英文视频 …...

    2024/5/7 21:10:14
  5. rubygems_本周在我们的雷达上:RubyGems和爱Angular的原因

    rubygemsWelcome to On Our Radar, a weekly round-up of news, trends and other cool stuff from the world of web development. 欢迎来到On Our Ra​​dar&#xff0c;每周综述来自Web开发领域的新闻&#xff0c;趋势和其他有趣的内容。 Microsoft was in the news again …...

    2024/5/7 21:22:45
  6. 加快双眼皮恢复方法

    ...

    2024/5/7 15:32:33
  7. AngularJS 入门1-基础

    AngularJS 入门1-基础 1.简介及使用方法 AngularJS 可以干什么&#xff1f; 答&#xff1a;AngularJS 能够非常容易的将input&#xff0c;select&#xff0c;button&#xff0c;textarea的内容提取并应用到HTML中&#xff0c;即解决静态网页技术在构建动态应用上的不足。An…...

    2024/5/7 23:31:31
  8. angular简单爬取百度搜索内容提示

    <!DOCTYPE html><html> <head> <meta charset"UTF-8"> <title>百度搜索</title>   //引入相关插件 <script src"https://cdn.bootcss.com/angular.js/1.3.8/angular.js"></script>   <script src&…...

    2024/5/7 17:21:24
  9. [AngularJS]项目框架搭建-MyFirst Skeleton

    前文有提到过 做一个简单的订餐系统&#xff0c;最近花了点时间&#xff0c;了解了一下AngularJS框架的使用。因此本文的目的根据了解的知识重新搭建基于 AngularJS框架. 该框架是基于对于AngularJS的学习而制定的&#xff0c;这其中肯定有很多不足&#xff0c;在以后的学习中在…...

    2024/5/7 4:03:16
  10. 学习angular,累,但是很开心

    在漫长的学习过程中&#xff0c;会遇到很多问题。在第一次使用angular写项目&#xff0c;自己很慌。不知从何下手。在慢慢摸索中体会到angular给我带来的乐趣&#xff0c;喜爱前端&#xff0c;希望可以一直从事这个行业。利用angularbootstrap实现轮播图效果。 <!DOCTYPE ht…...

    2024/5/7 20:07:38
  11. 韩式微创双眼皮价位

    ...

    2024/5/7 6:11:28
  12. 海军整形医院开眼角 埋线双眼皮推荐

    ...

    2024/5/7 11:56:57
  13. java反射机制原理

    JAVA基础--JAVA中的反射机制详解 //:面试题??原理;JAVA反射机制JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。…...

    2024/5/7 16:57:29
  14. 割双眼皮恢复

    ...

    2024/5/7 6:50:41
  15. 割双双眼皮有后遗症吗

    ...

    2024/5/8 0:36:34
  16. 割了双眼皮内眼角增生

    ...

    2024/5/7 4:44:37
  17. Angular入门系列:第一章:创建项目

    Angular入门系列&#xff1a;第一章&#xff1a;创建项目1. 搭建开发环境安装Node.js和npm安装 Angular CLI2. 创建工作空间和初始应用3. 启动应用服务器4. 修改此应用Angular 组件修改应用标题更改应用标题添加应用样式查看最终代码小结本文参考自Angular中文网&#xff0c;原…...

    2024/4/28 10:55:25
  18. 割了双眼皮后怎样能快速恢复

    ...

    2024/5/8 2:06:24
  19. 埋线双眼皮有紧绷感

    ...

    2024/4/27 21:48:36
  20. 李养群 洛阳做双眼皮多少钱

    ...

    2024/4/21 12:03:13

最新文章

  1. 9.Java内置锁的核心原理-Synchronized

    文章目录 Java内置锁的核心原理-Synchronized1.线程安全问题1.1.自增运算分析1.2.临界区资源和临界区代码片段 2.synchronized关键字2.1.synchronized同步方法2.2.synchronized同步代码块2.3.synchronized同步方法和synchronized同步代码块区别2.4.静态的同步方法2.5.内置锁的释…...

    2024/5/8 2:34:58
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. Java多路查找树(含面试大厂题和源码)

    多路查找树&#xff08;Multiway Search Tree&#xff09;&#xff0c;也称为B树或B树&#xff0c;是一种自平衡的树形数据结构&#xff0c;用于存储大量数据&#xff0c;通常用于数据库和文件系统中。它允许在查找、插入和删除操作中保持数据的有序性&#xff0c;同时优化了磁…...

    2024/5/4 13:18:59
  4. Chrome 浏览器无法保存或自动填充密码

    Chrome 浏览器无法保存或自动填充密码 分类 平时使用 Chrome 浏览器都会对网站的用户名密码自动填充&#xff0c;今天发现突然不行了&#xff0c;找到一个解决办法&#xff1a; 1、退出 Chrome 浏览器。2、打开 Chrome 安装目录下的的 Profile 目录&#xff0c;删除 Login Da…...

    2024/5/6 12:09:41
  5. 职场口才提升之道

    职场口才提升之道 在职场中&#xff0c;口才的重要性不言而喻。无论是与同事沟通协作&#xff0c;还是向上级汇报工作&#xff0c;亦或是与客户洽谈业务&#xff0c;都需要具备良好的口才能力。一个出色的职场人&#xff0c;除了拥有扎实的专业技能外&#xff0c;还应具备出色…...

    2024/5/6 16:35:36
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/7 5:50:09
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/7 9:45:25
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/7 14:25:14
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/7 11:36:39
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/7 9:26:26
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/6 21:42:42
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57