Web Components are a set of features that allow the creation of reusable widgets in web documents and web applications.

Web组件是允许在Web文档和Web应用程序中创建可重用窗口小部件的一组功能。

The components model in Angular 1.5.x allows for encapsulation and interoperability of individual HTML elements. Previously in angular 1.4.x you could build components using .directive() method, with this method you could build custom HTML elements and attributes giving your application the modularity and encapsulation of DOM elements.

Angular 1.5.x中的组件模型允许单个HTML元素的封装和互操作性。 以前在angular 1.4.x中,您可以使用.directive()方法构建组件,通过此方法,您可以构建自定义HTML元素和属性,从而为您的应用程序提供DOM元素的模块化和封装。

If that got the job done why should I use the new .component() approach?

如果完成了任务,为什么我应该使用新的.component()方法?

Good question buddy, let's answer that shall we?

好朋友,让我们回答吧?

先决条件 ( Prerequisites )

This article doesn't cover Angular basics and requires a basic understanding of Angular 1.

本文不介绍Angular基础知识,而是需要对Angular 1有基本了解。

You should have prior knowledge of how to build applications with Angular 1, and preferably be familiar with building custom directives with .directive() method helper.

您应该具有如何使用Angular 1构建应用程序的先验知识,并且最好熟悉使用.directive()方法助手来构建自定义指令。

Angular的1.5.x .component()关闭 ( Angular's 1.5.x .component() Up Close )

The .component() method helper is just syntactic sugar of the good old .directive() method we all hate and love. There is practically nothing you can do with .component() that you can't do with .directive().

.component()方法助手只是我们都讨厌和喜欢的旧式.directive()方法的语法糖。 使用.component()几乎没有什么可以用.directive()做什么。

.component() simplifies the way we create "components" - which roughly means UI directives. The component approach pushes the community to use defaults that have become best practices. Here are some defaults that components are shipped with:

.component()简化了我们创建“组件”的方式-大致意味着UI指令。 组件方法促使社区使用已成为最佳实践的默认值。 以下是组件随附的一些默认设置:

  • Components have isolated scopes by default.

    默认情况下,组件具有隔离范围。
  • They automatically use controllerAs syntax therefore we can use $ctrl to access component data.

    它们自动使用controllerAs语法,因此我们可以使用$ctrl来访问组件数据。
  • They use controllers instead of link functions.

    他们使用控制器而不是link功能。
  • The bindToController option is on by default.

    默认情况下, bindToController选项处于启用状态。

角组件:之前和之后 ( Angular Components: Before and After )

Below is an example of how we used to write components using the directive approach vs the component approach:

下面是一个示例,说明了我们过去使用指令方法还是使用组件方法来编写组件的方法:

// before
app.directive(name, fn)// after
app.component(name, options)

样例代码 (Sample Code)

app.directive('listDirective', function () {return {// Isolated scope bindingscope: {message: '='},// Inline template which is binded to message variable in the component controllertemplate: '<div>Hello {{$ctrl.message}}</div>',// The controller that handles our component logiccontroller: function () {this.message = "Thomas directive"},//defaults, automatically set when using .component()controllerAs: '$ctrl',bindToController: true};
});

It's a simple component directive, with isolated scope, binding and controller. Now let's look at the component approach.

这是一个简单的组件指令,具有隔离的作用域,绑定和控制器。 现在让我们看一下组件方法。

app.component('listComponent', {// isolated scope bindingbindings: {message: '='},// Inline template which is binded to message variable// in the component controllertemplate:'<div>Hello {{$ctrl.message}}</div>',// The controller that handles our component logiccontroller: function () {this.message = "Thomas component"}
});

Elegant right? You can see not much has changed, It is simpler and straightforward. Also, we get to enjoy some default settings. bindToController is set to true and controllerAs set to $ctrl all of this is done by the component itself.

优雅吧? 您可以看到变化不大,这更加简单明了。 另外,我们可以享受一些默认设置。 bindToController设置为true,而controllerAs设置为$ctrl所有这些都由组件本身完成。

将外部数据传递到组件 ( Passing External Data to Components )

When building an angular application, data is always loaded by services and passed to controllers then to the template. We could inject that particular service and get the data we need, but if another component or controller has loaded this data already we would be repeating ourselves.

在构建角度应用程序时,数据始终由服务加载,然后传递给控制器​​,然后传递给模板。 我们可以注入该特定服务并获取所需的数据,但是如果另一个组件或控制器已经加载了该数据,我们将重复自己的操作。

So what do we do?

那么我们该怎么办?

This is where bindings comes in, we can achieve this by adding a parameter to pass data to our component, which would be used as follows:

这是绑定进入的地方,我们可以通过添加参数以将数据传递到组件来实现此目的,该参数将按以下方式使用:

// the data attribute will hold the data from other components or services.<our-component data="'this is the data we need'"></our-component>

In our component definition, we basically define the name of the attribute that will be added to our component along with the type binding we want to use. There are four different type of bindings:

在组件定义中,我们基本上定义了将要添加到组件中的属性的名称以及要使用的类型绑定。 绑定有四种不同类型:

  1. = Two-way data binding. This means that if you update that variable in your component scope, the change will be reflected on the parent scope;

    = 双向数据绑定 。 这意味着,如果您在组件范围内更新该变量,则更改将反映在父范围内;
  2. < One-way bindings when we just want to read a value from a parent scope and not update it;

    < 单向绑定,当我们只想从父范围读取一个值而不更新它时;
  3. @ This is for string parameters;

    @这是字符串参数 ;
  4. & This is for callbacks in case your component needs to output something to its parent scope.

    &这用于回调 ,以防您的组件需要向其父范围输出某些内容。

For more details read this docs

有关更多详细信息,请阅读此文档

In our own case we need to pass a string, so our component will look like this:

在我们自己的情况下,我们需要传递一个字符串,因此我们的组件将如下所示:

var app = angular.module('app',[]);app.component('ourComponent', {// Binds the attibute data to the component controller.bindings: {data: '@'},// We can now access the data from the data attribute with `$ctrl`template:'<p>{{ $ctrl.data }}</p>'
});

Note that bindings are added to the local scope of your component, which is bound to a controller called $ctrl by default.

请注意,绑定被添加到组件的本地范围,默认情况下绑定到名为$ctrl的控制器。

组件间通信 ( Inter-Component Comunication )

When buiding an application using components, communication between these components is key in making the application as seamless as possible.

使用组件构建应用程序时,这些组件之间的通信是使应用程序尽可能无缝的关键。

Let's look at a scenario where you need an accordion to display some data to your users, you can use the default Bootstrap to implement this feature but it will be so hard to reuse the accordion even if you wanted to.

让我们看一下一个需要手风琴向用户显示一些数据的场景,您可以使用默认的Bootstrap来实现此功能,但是即使您愿意,也很难重用手风琴。

The best approach is to use two components accordion and accordion-panel, this components will comunicate together to build an accordion we can use anywhere in our application. Below is code snippets of how this can be achieved.

最好的方法是使用accordionaccordion-panel这两个组件,这两个组件将相互组合以构建可在应用程序中的任何地方使用的手风琴。 下面是如何实现此目标的代码段。

var app = angular.module('app', [])function AccordionController () {var self = this;// add panelself.addPanel = function(panel) {// code to add panel}self.selectPanel = function() {//code to select panel}
}// register the accordion component
app.component('accordion', {template: '<!---accordion-template-->',controller: AccordionController
}function AccordionPanelController () {// use parents methods herevar self = this;// add panelself.parent.addPanel(self);// select panelself.parent.selectPanel(self);
}// register the accordion-panel component
app.component('accordionPanel', {// require the parent component// In this case parent is an instance of accordion componentrequire: {'parent': '^accordion',template: '<!---accrodion-panel-template-->',controller: AccordionController
}

In the code above, using property require we have required the parent component which in this is accordion and used all its methods within our child accordion-panel component. Therefore whenever there are any changes within these two components, they will respond accordingly.

在上面的代码中,使用property require我们需要父组件(在这里是accordion并在我们的子accordion-panel组件中使用了其所有方法。 因此,只要这两个组件之间发生任何变化,它们都会相应地做出响应。

实作 ( Implementation )

Now that we have established what components are, the structure and how to build them. Let's actually make a component.

现在我们已经确定了什么是组件,结构以及如何构建它们。 让我们实际制作一个组件。

环境设定 (Environment setup)

Below are the tools we need to complete this exercise:

以下是完成此练习所需的工具:

  • Node.js

    Node.js
  • Angular 1.5.x

    角度1.5.x
  • Bower

    凉亭
  • http-server

    HTTP服务器

Create a folder called scotch-angular-components and in it, create the folders and files as follows.

创建一个名为scotch-angular-components的文件夹,并在其中创建文件夹和文件,如下所示。

├── bower.json
├── index.html
├── js
│   ├── app.js
│   └── components/
├── lib/
└── package.json

Create a new file in the root directory .bowerrc and add the following lines of code.

在根目录.bowerrc创建一个新文件,并添加以下代码行。

.bowerrc

.bowerrc

{"directory" : "lib"
}

The above file specifies the directory where our front-end libraries will be installed. To understand how .bowerrc works in detail visit bower.io.

上面的文件指定了我们的前端库的安装目录。 要了解.bowerrc工作原理,请访问bower.io 。

bower.json

bower.json

{"name" : "getting-started" ,"description" : "Getting started with angular components" ,"main" : "" ,"license" : "MIT" ,"homepage" : "" ,"dependencies" : {"angular" : "^1.5.6" ,"bootstrap" : "^3.3.6"}
}

Bower depends on bower.json to keep track of all the front-end packages your application needs. Looking at it closely you will notice that bootstrap and angular are listed as dependecies.

Bower依赖bower.json来跟踪您的应用程序需要的所有前端软件包。 仔细观察,您会发现bootstrapangular列为依赖项。

These are the libraries we need in this exercise. Visit bower/spec to get more information regarding this file.

这些是我们在本练习中需要的库。 访问bower / spec以获取有关此文件的更多信息。

To get our setup ready:

要准备好我们的设置,请执行以下操作:

  1. Install http-server, npm install http-server -g

    安装http-server, npm install http-server -g
  2. Install Angular and Bootstrap, bower install

    安装Angular和Bootstrap, bower install

If you do not have bower installed on your machine, run npm install bower -g. Now that we are done with the environment setup, let the fun begin.

如果您的计算机上未npm install bower -g ,请运行npm install bower -g 。 现在我们完成了环境设置,让我们开始乐趣。

创建一个Angular应用 (Create an Angular App)

In index.html write the code below.

index.html编写以下代码。

index.html

index.html

<!DOCTYPE html>
< html en = " us " ng-app = " app " >< head >< title > Getting started with Angular 1.5.x components </ title ><!-- bootsrap css-->< link rel = " stylesheet " type = " text/css " href = " lib/bootstrap/dist/css/bootstrap.min.css " ><!-- angularjs-->< script src = " lib/angular/angular.min.js " > </ script ><!-- The main app script-->< script src = " js/app.js " > </ script ><!-- components -->
</ head >< body >< div class = " container " ng-controller = " HomeCtrl as $ctrl " >< h1 > {{$ctrl.message}} </ h1 ></ div >
</ body ></ html >

and in js/app.js.

并在js/app.js

js/app.js

js / app.js

( function ( ) {var app =  angular . module ( 'app' , [ ] ) ;// A controller that displays hello worldapp . controller ( 'HomeCtrl' , function ( ) {this . message = "Hello, world" ;} ) ;
} ) ( ) ;

So far we have created an angular application called app; we have also included bootstrap CSS for styling and our main application file app.js.

到目前为止,我们已经创建了一个名为app的角度应用app ; 我们还包括用于样式设置的引导CSS和我们的主应用程序文件app.js

In the HomeCtrl we have initialised message to hello, world.

HomeCtrl我们已初始化向hello, world发送消息。

In index.html we have required our controller with ng-controller directive and a div that is going to display our message.

index.html我们需要使用ng-controller指令和一个div来显示消息ng-controller

Run http-server and visit http://localhost:8080. There we go, we got hello world printed out. This is a sign that angular is well set and working.

运行http-server并访问http://localhost:8080 。 到这里,打印出你好世界。 这表明角度设置正确并且可以正常工作。

添加组件 ( Adding Components )

For this demo, we are going to create four components, one that create a navigation bar and another one that displays a list of users with names , country and city the reside in and the last ones are the accordion and the accordion-panel that we discussed above.

在此演示中,我们将创建四个组件,一个组件创建一个导航栏,另一个组件显示一个具有用户名,居住国家和城市的用户列表,最后一个组件是我们的accordionaccordion-panel 。以上讨论。

We will start with the navigation bar.

我们将从导航栏开始。

In js/components create two files appComponent.js and appComponent.hmtl respectively.

js/components创建两个文件appComponent.jsappComponent.hmtl

js/components/appComponent.js

js / components / appComponent.js

( function ( ) {'use strict' ;var app = angular . module ( 'app' ) ;app . component ( 'menuBar' , {// defines a two way binding in and out of the componentbindings : {brand : '<'} ,// Load the templatetemplateUrl : '/js/components/appComponent.html' ,controller : function ( ) {// A list of menusthis . menu = [ {name : "Home" ,component : "home"} , {name : "About" ,component : "about"} , {name : "Contact" ,component : "contact"} ] ;}} ) ;
} ) ( ) ;

In the above file we are telling angular to create a component called menuBar, use template appComponent.html to render a list of menus this.menu.

在上面的文件中,我们告诉angular创建一个名为menuBar的组件,使用模板appComponent.html呈现菜单列表this.menu

js/components/appComponent.html

js / components / appComponent.html

< nav class = " navbar navbar-default " >< div class = " container " >< div class = " navbar-header " >< a class = " navbar-brand " href = " # " > {{$ctrl.brand}} </ a ></ div ><!-- Generated navbar -->< div >< ul class = " nav navbar-nav " >< li ng-repeat = " menu in $ctrl.menu " >< a href = " {{menu.component}} " > {{menu.name}}< span class = " sr-only " > (current) </ span ></ a ></ li ></ ul ></ div ><!-- generated navbar --></ div ><!-- /.container-fluid -->
</ nav >

In this template you can see we are using ng-repeat directive to dynamically generate the navigation bar. We can access data from the component controller by using $ctrl, in this case $ctrl.menu will contain the array of menus and $ctrl.brand will contain the data passed by the brand attribute.

在此模板中,您可以看到我们正在使用ng-repeat指令动态生成导航栏。 我们可以使用$ctrl从组件控制器访问数据,在这种情况下, $ctrl.menu将包含菜单数组,而$ctrl.brand将包含brand属性传递的数据。

If you visit the browser and refresh, you will still see Hello, world on the screen. This is because we have not added the component to our app. Let’s do that. Include the component in the head tag and replace the div element in index.html with the following code.

如果您访问浏览器并刷新,您仍将在屏幕上看到Hello, world 。 这是因为我们尚未将组件添加到我们的应用中。 来做吧。 将组件包括在head标签中,并使用以下代码替换index.htmldiv元素。

index.html

index.html

<!--index.html-->< head ><!--Components-->< script src = " js/components/appComponent.js " > </ script ></ head >< body >< menu-bar brand = " Brand " > </ menu-bar >
</ body >

Refresh the page again and poof! We have our menu bar laid out beautifully.

再次刷新页面,然后加粗! 我们的菜单栏布置精美。

When angular bootstraps the app, it will read the Dom element <menu-bar> and maps it to our component menuBar. Therefore, whenever angular encounters this element it will render out component for us.

当角度引导程序启动时,它将读取Dom元素<menu-bar>并将其映射到我们的组件menuBar 。 因此,只要angular遇到此元素,它将为我们渲染组件。

Okay! Now that we have created our navigation component, let's add one more. We need a table that has names of users, the country of origin and the city they reside in. We could use a controller and populate the data in our view, but if we ever require this data in a different view we would have to repeat the same code again. To fix this we create another component.

好的! 现在我们已经创建了导航组件,让我们再添加一个。 我们需要一个表,其中包含用户名称,原籍国和他们所居住的城市。我们可以使用控制器并在视图中填充数据,但是如果我们需要在其他视图中使用此数据,则必须重复同样的代码。 为了解决这个问题,我们创建了另一个组件。

In js/components create new files userComponent.js and userComponent.html. In userComponent.js write the following code.

js/components创建新文件userComponent.jsuserComponent.html 。 在userComponent.js编写以下代码。

js/components/userComponent.js

js / components / userComponent.js

( function ( ) {'use strict' ;var app = angular . module ( 'app' ) ;app . component ( 'userInfo' , {// Binds caption to the parent scopebindings : {caption : '<'} ,// Loads the component templatetemplateUrl : '/js/components/userComponent.html' ,controller : function ( ) {// The list of users we will be displayingthis . records = [ {name : "Alfreds Futterkiste" ,city : "Berlin" ,Country : "Germany"} , {name : "Ana Trujillo Emparedados y helados" ,city : "México D.F." ,country : "Mexico"} , {name : "Blondel père et fils" ,city : "Strasbourg" ,country : "France"} , {name : "Bólido Comidas preparadas" ,city : "Madrid" ,country : "Spain"} ] ;}} ) ;
} ) ( ) ;

In this file, we have created a component userInfo which contains an array of users in the records variable. To render this data we need a template that will iterate through the records array and display it to the browser. In js/components/userComponent.html write the following code.

在此文件中,我们创建了一个组件userInfo ,该组件在records变量中包含一个用户数组。 要呈现此数据,我们需要一个模板,该模板将遍历records数组并将其显示给浏览器。 在js/components/userComponent.html编写以下代码。

js/components/userComponent.html

js / components / userComponent.html

< div class = " container " >< table class = " table table-bordered " ><!-- table caption will be displayed here-->< tr >< td id = " caption " colspan = " 4 " > {{$ctrl.name}} </ td ></ tr >< th >< td > Name </ td >< td > City </ td >< td > Country </ td ></ th ><!-- users will be displayed here-->< tr ng-repeat = " user in $ctrl.records " >< td > </ td >< td > {{user.name}} </ td >< td > {{user.city}} </ td >< td > {{user.country}} </ td ></ tr ></ table >
</ div >
<!-- component styling-->
< style type = " text/css " >
#caption {text-align: center;
}
</ style >

In this template, we have created a table which accesses the component data through the use of $ctrl, loops through it and displays it to us. That's it? Hold on we are not done yet, right now we have just defined the component but our app has no way of locating this component, to register this component we need to link our component script to the app and add user-info tag to index.html. This way when angular sees this user-info tag it will render our component. Let’s do that.

在此模板中,我们创建了一个表,该表通过使用$ctrl访问组件数据,并对其进行循环并将其显示给我们。 而已? 等等,我们还没有完成,现在我们已经定义了组件,但是我们的应用程序无法找到该组件,要注册该组件,我们需要将组件脚本链接到应用程序,并在index.html添加user-info标记index.html 。 这样,当angular看到此user-info标签时,它将呈现我们的组件。 来做吧。

index.html

index.html

<!--index.html-->
<!--in the head tag-->
< script src = " js/components/userComponent.js " > </ script ><!--below <menu-bar> tag-->< user-info name = " ' Users Table ' " > </ user-info >

When you refresh your browser, you should see the users displayed in table as below.

刷新浏览器时,您应该看到下表中显示的用户。

Ok, we have got our users table, and navigation now lets build our accordion.

好的,我们已经有了用户表,现在可以通过导航来构建手风琴了。

This section will introduce you to how you can build components that are tightly coupled, working together to provide seanmless user exprecience. Lets get down to it.

本节将向您介绍如何构建紧密耦合的组件,一起工作以提供无缝的用户体验。 让我们开始吧。

js.components/accordionComponent.js

js.components / accordionComponent.js

( function ( ) {'use strict'var app = angular . module ( 'app' ) ;// Accordion controlerfunction AccordionController ( ) {var self = this ;var panels = [ ] ;// here we take the panel and add to our list of panels// to preselect the first panel we call turnOn function on the first panelself . addPanel = function ( panel ) {panels . push ( panel ) ;if ( panels . length > 0 ) {panels [ 0 ] . turnOn ( ) ;}} ;// when a panel is selected we would want to open the contets// here we take the panel find it in our array and turn if on if not selected// and off it it is.self . selectPanel = function ( panel ) {for ( var i in panels ) {if ( panel === panels [ i ] ) {panels [ i ] . turnOn ( ) ;} else {panels [ i ] . turnOff ( ) ;}}} ;}
// Register the component to the appapp . component ( 'accordion' , {transclude : true ,template : '<div class="panel-group" ng-transclude></div>' ,controller : AccordionController} ) ;} ) ( ) ;

In the above file we have two methods, addPanel and selectpanel. The addPanel method takes a panel and adds it into the list of panel existing in the component and preselects the first panel in our list.

在上面的文件中,我们有两种方法, addPanelselectpanel 。 addPanel方法获取一个面板并将其添加到组件中现有面板的列表中,并预选择列表中的第一个面板。

As for the selectPanel this method will respond to the click event when the panel is seleted, it will take that respective panel toggle between on and off.

至于selectPanel当面板被selectPanel此方法将响应click事件,这将使各个面板在开和关之间切换。

* js/components/accordionPanel.js*

* js / components / accordionPanel.js *

( function ( ) {'use strict' ;// accordion-panel controllerfunction AccordionPanelController ( ) {var self = this ;// register the panel in initself . $onInit = function ( ) {self . parent . addPanel ( self ) ;} ;// Turns on the panel by changing selected to trueself . turnOn = function ( ) {self . selected = true ;} ;// Turns off the panel by changing selected to falseself . turnOff = function ( ) {self . selected = false ;} ;// Selects a the current selected panelself . select = function ( ) {self . parent . selectPanel ( self ) ;} ;}
// Register the accordion-panel componentapp . component ( 'accordionPanel' , {transclude : true ,// require the parent component, in this case accordion componentrequire : {'parent' : '^accordion'} ,// specify attribute binding// https://docs.angularjs.org/api/ng/service/$compile#-scope-bindings : {heading : '@'} ,// Accordion-panel templatetemplate : `<div class="panel panel-default"><div class="panel-heading" ng-click="$ctrl.select()"><h3 class="panel-title">{{$ctrl.heading}}</h3></div><div class="panel-body" ng-transclude ng-if="$ctrl.selected"></div></div>` ,controller : AccordionPanelController ,} ) ;} ) ( ) ;

After building the accordion component, we need an accordion panel to hold any data we may have. This is part that will be turned on and off to provide the accordion effect.

构建了手风琴组件之后,我们需要一个手风琴面板来保存我们可能拥有的任何数据。 这部分将被打开和关闭以提供手风琴效果。

In this file we have $onInit a lifeclycle hook, turnOn, turnOff and select methods. When our component is constructed, we need to register our panel to the parent component. Using $onInit hook, we have called the addPanel method to inform the parent component that we have added one more panel.

在此文件中,我们有$onInit周期挂钩, turnOnturnOffselect方法。 构造组件后,我们需要将面板注册到父组件。 使用$onInit钩子,我们调用了addPanel方法来通知父组件我们又添加了一个面板。

We then went ahead and defined turnOff and turnOn methods, this methods provide us with the ability to turn on and off the panels when selected. The select method works with the turnOn and turnOff to provide the toggle effect.

然后,我们继续定义了turnOffturnOn方法,此方法使我们能够在选定面板时打开和关闭面板。 select方法与turnOnturnOff以提供切换效果。

In the template we have created a panel, using bootstrap panels with a panel heading, panel title, and panel body. The panel heading has been bound to $ctrl.select() method through a click event, this means that when we click this heading, the select method will be called and will either turn on or off the panel. The panel body has been bound to the $ctrl.selected, when the header is clicked this value will toggle between true and false giving our component the toggle effect.

在模板中,我们使用带有面板标题,面板标题和面板主体的引导面板创建了一个面板。 面板标题已通过click事件绑定到$ctrl.select()方法,这意味着当我们单击此标题时,将调用select方法,它将打开或关闭面板。 面板主体已绑定到$ctrl.selected ,单击标题时,此值将在true和false之间切换,从而为我们的组件提供切换效果。

Now that we have build our components lets intergrate them together to form our accordion. In your index.html add the two components in your head tag * index.html

现在我们已经构建了组件,可以将它们集成在一起以形成我们的手风琴。 在您的index.html中,在您的head标签中添加两个组件* index.html

...
< script src = " js/components/accordionComponent.js " > </ script >
< script src = " js/components/accordionPanelComponent.js " > </ script >
...

and below the user-info component add the following

user-info组件下方,添加以下内容

...< div class = " container " ><!--The main accordion component-->< accordion ><!--The first panel with heading 1-->< accordion-panel heading = " heading 1 " >This a panel</ accordion-panel ><!--The secoind panel with heading 2-->< accordion-panel heading = " Heading 2 " >this is another panel</ accordion-panel ></ accordion ></ div >...

Lets save our changes and refresh your browser! Your page should look similar to this.

保存我们的更改并刷新您的浏览器! 您的页面应与此类似。

The accrodion we have built works the same way as native bootstrap accordion. The beauty here is that we can resuse these components to build an accordion anywhere in our application.

我们构建的加速器与本地自举式手风琴的工作方式相同。 这里的好处是,我们可以在应用程序中的任何位置重用这些组件来构建手风琴。

There you have it! We have built an angular application using components - simple and easy.

你有它! 我们已经使用简单易用的组件构建了一个角度应用程序。

结论 ( Conclusion )

Building an angular application using .controller() and .directive() can become tedious and dirty. When your application scales your codebase can get messier. With the component approach, you can build your application in small feature specific blocks that are highly scalable, maintainable and elegant.

使用.controller().directive()构建角度应用程序可能会变得乏味且肮脏。 当您的应用程序扩展时,您的代码库会变得更加混乱。 使用组件方法,您可以在高度可伸缩,可维护且美观的小型功能特定模块中构建应用程序。

翻译自: https://scotch.io/tutorials/how-to-use-angular-15s-component-method

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

相关文章

  1. 双眼皮怎么让它消肿快要

    ...

    2024/4/21 6:20:21
  2. Javascript通过replace和正则表达式实现replaceAll功能

    replace() 方法用于在字符串中用一些字符替换另一些字符&#xff0c;或替换一个与正则表达式匹配的子串。 语法&#xff1a;stringObject.replace(regexp/substr,replacement) 参数 &#xff1a; regexp/substr 必需。规定子字符串或要替换的模式的 RegExp 对象。 请注意&am…...

    2024/4/21 6:20:20
  3. 割了双眼皮能吃煮鸡蛋吗

    ...

    2024/4/21 6:20:18
  4. 割完双眼皮第几天可以用鸡蛋敷

    ...

    2024/4/21 6:20:18
  5. 明星割双眼皮的

    ...

    2024/4/20 19:08:44
  6. angular4入门笔记

    一. 设置开发环境 &#xff08;前提&#xff1a;先安装好node.js和npm&#xff09; 1.检测版本&#xff1a;node -v和npm -v 2.全局安装&#xff1a;npm install -g angular/cli 3.创建新项目&#xff1a;ng new my-app(耐心等待) 4.启动服务器&#xff1a; cd my-app n…...

    2024/4/30 16:11:48
  7. Angular 4入门教程系列:1:运行在Docker中的HelloWorld

    Angular作为目前前端的一个重要选择&#xff0c;加之背后站着google&#xff0c;得到了越来越多的开发者的青睐。但是发现没有按照由浅入深地实例化的教程&#xff0c;虽然官网的教程已经不错&#xff0c;但是初始入门的细节没有提到&#xff0c;再加之网络等问题&#xff0c;决…...

    2024/4/20 19:08:42
  8. 大双眼皮网红照片

    ...

    2024/4/20 19:08:41
  9. AngularJs函数之大小写转换、对象深拷贝、对象扩充、数据遍历

    1、打印AngularJs的版本号&#xff1a;1var m angular.module(app, []);2m.controller(ctrl, [$scope, function($scope){3 console.log(angular.version);4}]);2、大小写转换&#xff1a;1var m angular.module(app, []);2m.controller(ctrl, [$scope, function($scope){…...

    2024/4/21 6:20:17
  10. 自然双眼皮图片大全

    ...

    2024/4/21 6:20:16
  11. angular.copy

    angular.copy(source, [destination]) 作用&#xff1a;对象的深拷贝参数&#xff1a; source&#xff1a;源对象destination&#xff1a;拷贝的对象 返回值&#xff1a;拷贝的对象 全选复制放进笔记<div ng-controller"Controller"><form>Name: <…...

    2024/4/21 6:20:14
  12. Angular TypeScript 一些技巧

    ngFor循环对象取值 data {}; <div *ngFor"let item of data | keyvalue"></div> reduce 计算重复累计值 // Get the total durationgetCountNumber(dataArr): any{return dataArr.reduce((prev, next) > {prev[next.eventType] {count: (prev…...

    2024/4/21 6:20:13
  13. MFC中获取窗口句柄指针及相关函数

    一般我们使用的框架是VC提供的Wizard生成的MFC App Wizard(exe)框架,无论是多文档还是单文档,都存在指针和句柄获取和操作问题。本文中将针对各类句柄的获得、指针的获得以及MFC中常见应用进行阐述并举例。本文内容索引:==================================================…...

    2024/4/21 6:20:12
  14. js 中引用类型 的深拷贝 和 浅拷贝的区别

    一、曾经在读JQ源码的时候&#xff0c;对深拷贝算是有了一点的理解。我们在项目中是不是经常会遇到这样的问题呢&#xff1f; 后台返回一个数组对象&#xff08;引用类型&#xff09;.次数在页面渲染中需要对部分数据进行处理 比如&#xff1a;银行卡62345092534 &#xff08;这…...

    2024/4/21 6:20:11
  15. 中国医学科学院武汉吴小蔚铭医双眼皮做的最好的

    ...

    2024/4/21 6:20:10
  16. C#浅拷贝和深拷贝

    C#中的对象拷贝问题&#xff1b; 所谓的对象拷贝&#xff0c;其实就是为对象创建副本&#xff0c;C#中将拷贝分为两种&#xff0c;分别为浅拷贝和深拷贝&#xff1b; 所谓浅拷贝就是将对象中的所有字段复制到新的副本对象中&#xff1b;浅拷贝对于值类型与引用类型的方式有区别…...

    2024/4/22 21:18:25
  17. 深拷贝与浅拷贝 Deep Copy Shallow Copy

    深拷贝 深拷贝是指创建原对象的副本 浅拷贝 浅拷贝是指对原对象的引用...

    2024/4/23 7:52:29
  18. 关于js浅拷贝深拷贝的思考

    最近做需求又遇到深拷贝浅拷贝的问题&#xff0c;就整理了下&#xff0c;加深下印象。 列举几个常用的场景 1.a为基本数据类型 &#xff08;基本数据类型按值访问&#xff09; var a 1; var b a; a 2; console.log(b); //1 2.a为对象&#xff0c;或数组 &#xff08;引用…...

    2024/4/21 6:20:07
  19. 南京第二医院双眼皮费用

    ...

    2024/4/20 13:45:15
  20. Javascript 深拷贝与浅拷贝理解与应用

    深拷贝和浅拷贝的理解所谓的拷贝一定是复制数据&#xff0c;而一般在讨论深浅拷贝的时候都是在说对象的深浅拷贝。 对象拷贝(Object Copy)就是将一个对象的属性拷贝到另一个有着相同类类型的对象中去。在程序中拷贝对象是很常见的&#xff0c;主要是为了在新的上下文环境中复用…...

    2024/4/21 6:20:05

最新文章

  1. 排序算法:插入、希尔、选择、推排、冒泡、快速、归并排序

    排序算法 目录 前言 一、排序的概念 1.1排序的概念 1.2 常见的排序算法 二、常见排序算法的实现 2.1 插入排序 2.2 希尔排序 2.3 选择排序 2.4 堆排序 2.5 冒泡排序 2.6 快速排序 2.6.1 hoare版本 2.6.2 前后指针版本 2.6.3 非递归版本 2.7 归并排序 归并排序 2.8 计数排序 三、…...

    2024/4/30 17:32:42
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. 算法打卡day29

    今日任务&#xff1a; 1&#xff09;1005.K次取反后最大化的数组和 2&#xff09;134.加油站 3&#xff09;135.分发糖果 1005.K次取反后最大化的数组和 题目链接&#xff1a;1005. K 次取反后最大化的数组和 - 力扣&#xff08;LeetCode&#xff09; 给定一个整数数组 A&…...

    2024/4/30 15:22:05
  4. MXNet库

    MXNet&#xff08;MatriX Network&#xff09;是一个开源的深度学习框架&#xff0c;最初由亚马逊公司开发并于2015年发布。它是一个高效、灵活且可扩展的框架&#xff0c;旨在支持大规模的分布式深度学习模型训练和部署。 以下是 MXNet 库的一些主要特点和组成部分&#xff1…...

    2024/4/30 5:04:32
  5. 1018: 【C1】【循环】奇数求和

    题目描述 计算非负整数 m 到 n&#xff08;包括m 和 n &#xff09;之间的所有奇数的和&#xff0c;其中&#xff0c;m 不大于 n&#xff0c;且n 不大于300。例如 m3, n12, 其和则为&#xff1a;35791135。 输入 两个数 m 和 n&#xff0c;两个数以一个空格分开&#xff0c;…...

    2024/4/29 10:31:41
  6. 【外汇早评】美通胀数据走低,美元调整

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

    2024/4/29 23:16:47
  7. 【原油贵金属周评】原油多头拥挤,价格调整

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

    2024/4/29 6:03:24
  8. 【外汇周评】靓丽非农不及疲软通胀影响

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

    2024/4/29 2:29:43
  9. 【原油贵金属早评】库存继续增加,油价收跌

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

    2024/4/29 14:21:50
  10. 【外汇早评】日本央行会议纪要不改日元强势

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

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

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

    2024/4/27 14:22:49
  12. 【外汇早评】美欲与伊朗重谈协议

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

    2024/4/28 1:28:33
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

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

    2024/4/30 9:43:09
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

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

    2024/4/27 17:59:30
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

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

    2024/4/25 18:39:16
  16. 【外汇早评】美伊僵持,风险情绪继续升温

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

    2024/4/28 1:34:08
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

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

    2024/4/26 19:03:37
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

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

    2024/4/29 20:46:55
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

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

    2024/4/25 18:39:14
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

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

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

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

    2024/4/27 23:24:42
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

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

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

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

    2024/4/30 9:42:22
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

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

    2024/4/30 9:43:22
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

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

    2024/4/30 9:42:49
  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