Directive是教HTML玩一些新把戏的途径。在DOM编译期间,directives匹配HTML并执行。这允许directive注册行为或者转换DOM结构。

  Angular自带一组内置的directive,对于建立Web App有很大帮助。继续扩展的话,可以在HTML定义领域特定语言(domain specific language ,DSL)。

一、在HTML中引用directives

  Directive有驼峰式(camel cased)的风格的命名,如ngBind(放在属性里貌似用不了~)。但directive也可以支蛇底式的命名(snake case),需要通过:(冒号)、-(减号)或_(下划线)连接。作为一个可选项,directive可以用“x-”或者“data-”作为前缀,以满足HTML验证需要。这里列出directive的合法命名:

  • ng:bind
  • ng-bind
  • ng_bind
  • x-ng-bind
  • data-ng-bind

  Directive可以放置于元素名、属性、class、注释中。下面是引用myDir这个directive的等价方式。(但很多directive都限制为“属性”的使用方式)

复制代码
<span my-dir="exp"></span><span class="my-dir: exp;"></span><my-dir></my-dir><!-- directive: my-dir exp -->
复制代码

  Directive可以通过多种方式引用,下面列出N种等价的方式:

复制代码
<!DOCTYPE HTML>
<html lang="zh-cn" ng-app>
<head><meta charset="UTF-8"><title>invoke-directive</title><style type="text/css">.ng-cloak {display: none;}</style>
</head>
<body>
<div ng-controller="MyCtrl">Hello <input ng-model="name"/><hr/>ngBind="name" 这个用不了~~ <span ngBind="name"></span><br/>ng:bind="name"<span ng:bind="name"></span><br/>ng_bind="name"<span ng_bind="name"></span><br/>ng-bind="name"<span ng-bind="name"></span><br/>data-ng-bind="name"<span data-ng-bind="name"></span><br/>x-ng-bind="name"<span x-ng-bind="name"></span><br/>
</div>
<script src="../angular-1.0.1.js" type="text/javascript"></script>
<script type="text/javascript">function MyCtrl($scope) {$scope.name = "beauty~~";}
</script>
</body>
</html>
复制代码

 

二、String interpolation

  在编译过程中,compiler通过$interpolate服务匹配文本与属性中的嵌入表达式(如{{something}})。这些表达式将会注册为watches,并且作为digest cycle(之前不是digest-loop吗?!)的一部分,一同更新。下面是一个简单的interpolation

<img src="img/{{username}}.jpg"/>Hello {{username}}!

三、Compilation process, and directive matching

  HTML“编译”的三个步骤:

  1. 首先,通过浏览器的标准API,将HTML转换为DOM对象。这是很重要的一步。因为模版必须是可解析(符合规范)的HTML。这里可以跟大多数的模版系统做对比,它们一般是基于字符串的,而不是基于DOM元素的。

  2. 对DOM的编译(compilation)是通过调用$comple()方法完成的。这个方法遍历DOM,对directive进行匹配。如果匹配成功,那么它将与对应的DOM一起,加入到directive列表中。只要所有与指定DOM关联的directive被识别出来,他们将按照优先级排序,并按照这个顺序执行他们的compile() 函数。directive的编译函数(compile function),拥有一个修改DOM结构的机会,并负责产生link() function的解析。$compile()方法返回一个组合的linking function,是所有directive自身的compile function返回的linking function的集合。

  3. 通过上一步返回的linking function,将模版与scope连接起来。这反过来会调用directive自身的linking function,允许它们在元素上注册一些监听器(listener),以及与scope一起建立一些watches。这样得出的结果,是在scopeDOM之间的一个双向、即时的绑定。scope发生改变时,DOM会得到对应的响应。

 

复制代码
    var $compile = ...; // injected into your codevar scope = ...;var html = '<div ng-bind='exp'></div>';// Step 1: parse HTML into DOM elementvar template = angular.element(html);// Step 2: compile the templatevar linkFn = $compile(template);// Step 3: link the compiled template with the scope.linkFn(scope);
复制代码

  

四、Reasons behind the compile/link separation

  在这个时候,你可能会想知道为什么编译进程会划分为compilelinke两个步骤。为了明白这一点,让我们看看一个真实的例子(repeater

    Hello {{user}}, you have these actions:<ul><li ng-repeat="action in user.actions">{{action.description}}</li></ul>
  简单地讲,之所以分开 compile linke 两步,是因为有时候需要在 model 改变后,对应的 DOM 结构也需要改变的情况,如 repeaters

  当上面的例子被编译时,编译器会遍历所有节点以寻找directive{{user}}是一个interpolation directive的例子。ngRepeat又是另外一个directive。但ngRepeat有一个难点。它需要能够很快地为每一个在users.actions中的action制造出新的li的能力。这意味着它为了满足克隆li并且嵌入特定的action(这里是指useractions的其中一个值)的目的,需要保持一个干净li元素的拷贝,li元素需要被克隆和插入ul元素。但仅仅克隆li元素是不够的。还需要编译li,以便它的directive{{action.descriptions}})能够在正确的scope中被解析。原始的方法,一般会简单地插入一个li元素的拷贝,然后编译它。但编译每一个li元素的拷贝会比较缓慢,因为编译过程需要我们遍历DOM节点树,查找directive并运行它们。如果我们有一个编译,需要通过repeater100item进行处理,那么我们将陷入性能问题。

  问题的解决方案,是将编译过程分解为两个步骤。compile阶段识别出所有directive,并且将它们按照优先级进行排序,在linking阶段将特定的scope与特定的li绑定在一起。

  ngRepeat将各个li分开编译以防止编译过程落入li元素中。li元素的编译结果是一个包含所有包含在li元素中的directivelinking function,准备与特定li元素的拷贝进行连接。在运行时,ngRepeat监测表达式,并作为一个item,被加入到一个li元素拷贝的数组,为克隆好的li元素创建新的scope,并调用该拷贝对应的link function

  总结:

  • 编译函数(compile function) - 编译函数在directive中是比较少见的,因为大多数directive只关心与指定的DOM元素工作,而不是改变DOM元素的模版(DOM自身以及内部的结构)。为了优化性能,一些可以被directive实例共享的操作,可以移动到compile函数中。
  • 连接函数(link function) - 极少directive是没有link function的。link function允许directive在指定的拷贝后的DOM元素实例上注册监听器,也可以将scope中特定内容复制到DOM中。

 

五、写一个directive(简易版)

  在这个例子里面,我们将建立一个根据输入格式,显示当前时间的directive。

 

复制代码
<!DOCTYPE HTML>
<html lang="zh-cn" ng-app="TimeFormat">
<head><meta charset="UTF-8"><title>time-format</title>
</head>
<body>
<div ng-controller="MyCtrl" id="main">Date format: <input ng-model="format" type="text"/><hr/><!--下面使用属性x-current-time,是为了试试上面说的合法命名~~current:time、current-time、current_time、data-current-time -_-!!! -->Current time is : <span x-current-time="format" id="myFormat"></span><br/><button ng-click="remove()">remove the span</button>
</div>
<script src="../angular-1.0.1.js" type="text/javascript"></script>
<script type="text/javascript">angular.module("TimeFormat", [])//在TimeFormat应用中注册“currentTime”这个directive的工厂方法//前文提到过,依赖注入,可以直接在function的参数中写入,这里注入了$timeout、dataFilter
            .directive("currentTime", function (dateFilter) {//这个是上面提到的linking function。(不需要添加compile function,为啥?。。。)return function (scope, element, attr) {var intervalId;//更新对应element的text值,即更新时间function updateTime() {element.text(dateFilter(new Date(), scope.format));}//通过watch,监控span对象的currentTime的值(是format这个model值,即input的值!!)//这个方法仅仅在format发生改变的时候执行
                    scope.$watch(attr.currentTime, function (value) {scope.format = value;updateTime();});//当span被去掉的时候,取消更新
                    element.bind("$destroy", function () {clearInterval(intervalId);});intervalId = setInterval(updateTime, 1000);};}).controller("MyCtrl",function($scope,$rootScope) {$scope.format = "M/d/yy h:mm:ss a";$scope.remove = function() {var oFormat = document.getElementById("myFormat");if(oFormat) {angular.element(oFormat).remove();//通过这种方式调用remove,可以触发$destroy事件啊!!!试了我N久。。。
                    }};});
</script>
</body>
</html>
复制代码

 

六、写一个directive(详细版)

  下面是一个创建directive样例(directive对象定义模版)。想看详细列表,请继续往下看。

复制代码
var myModule = angular.module(...);myModule.directive('directiveName', function factory(injectables) {var directiveDefinitionObject = {priority: 0,template: '<div></div>',templateUrl: 'directive.html',replace: false,transclude: false,restrict: 'A',scope: false,compile: function compile(tElement, tAttrs, transclude) {return {pre: function preLink(scope, iElement, iAttrs, controller) { ... },post: function postLink(scope, iElement, iAttrs, controller) { ... }}},link: function postLink(scope, iElement, iAttrs) { ... }};return directiveDefinitionObject;});
复制代码

  在大多数场景下,我们并不需要精确控制,所以上面的定义是可以化简的。定义模版中的每一部分,将在下面章节讲解。在这个章节,我们仅仅关注定义模版的异构体(isomers of this skeleton,没看懂。。。期待大家补充)。

  简化代码的第一步是依赖默认值。因此,上面的代码可以简化为:

复制代码
    var myModule = angular.module(...);myModule.directive('directiveName', function factory(injectables) {var directiveDefinitionObject = {compile: function compile(tElement, tAttrs) {return function postLink(scope, iElement, iAttrs) { ... }}};return directiveDefinitionObject;});
复制代码

  大多数directive只关心实例,而不是模版转换,所以可以进一步化简(翻译得很勉强。。。期待大家补充):

  

    var myModule = angular.module(...);myModule.directive('directiveName', function factory(injectables) {return function postLink(scope, iElement, iAttrs) { ... }});

 

七、工厂方法

  工厂方法负责创建directive。它仅仅使用一次,就在compiler第一次匹配到directive的时候。你可以在这里执行一些初始化操作。工厂方法通过$injector.invoke执行,让它遵守所有注入声明规则(rules of injection annotation),让其变为可注入的。

 

八、directive定义对象说明

 

  directive定义对象提供了compiler的结构。属性如下:

 

  • name - 当前scope的名称,注册时可以使用默认值(不填)。

 

  • priority(优先级)当有多个directive定义在同一个DOM元素时,有时需要明确它们的执行顺序。这属性用于在directivecompile function调用之前进行排序。如果优先级相同,则执行顺序是不确定的(经初步试验,优先级高的先执行,同级时按照类似栈的“后绑定先执行”。另外,测试时有点不小心,在定义directive的时候,两次定义了一个相同名称的directive,但执行结果发现,两个compile或者link function都会执行)。

 

  • terminal(最后一组)如果设置为”true”,则表示当前的priority将会成为最后一组执行的directive。任何directive与当前的优先级相同的话,他们依然会执行,但顺序是不确定的(虽然顺序不确定,但基本上与priority的顺序一致。当前优先级执行完毕后,更低优先级的将不会再执行)。

 

  • scope - 如果设置为:

 

    • true - 将为这个directive创建一个新的scope。如果在同一个元素中有多个directive需要新的scope的话,它还是只会创建一个scope。新的作用域规则不适用于根模版(root of the template),因此根模版往往会获得一个新的scope

 

    • {}(object hash) - 将创建一个新的、独立(isolate)scope”isolate” scope与一般的scope的区别在于它不是通过原型继承于父scope的。这对于创建可复用的组件是很有帮助的,可以有效防止读取或者修改父级scope的数据。这个独立的scope会创建一个拥有一组来源于父scope的本地scope属性(local scope properties)object hash。这些local properties对于为模版创建值的别名很有帮助(useful for aliasing values for templates -_-!)。本地的定义是对其来源的一组本地scope propertyhash映射(Locals definition is a hash of local scope property to its source #&)$&@#)($&@#_)

 

      • @@attr - 建立一个local scope propertyDOM属性的绑定。因为属性值总是String类型,所以这个值总是返回一个字符串。如果没有通过@attr指定属性名称,那么本地名称将与DOM属性的名称一直。例如<widget my-attr=”hello {{name}}”>widgetscope定义为:{localName:’@myAttr’}。那么,widget scope propertylocalName会映射出”hello {{name}}"转换后的真实值。name属性值改变后,widget scopelocalName属性也会相应地改变(仅仅单向,与下面的”=”不同)。name属性是在父scope读取的(不是组件scope

 

      • ==expression(这里也许是attr) 在本地scope属性与parent scope属性之间设置双向的绑定。如果没有指定attr名称,那么本地名称将与属性名称一致。例如<widget my-attr=”parentModel”>widget定义的scope为:{localModel:’=myAttr’},那么widget scope property “localName”将会映射父scope的“parentModel”。如果parentModel发生任何改变,localModel也会发生改变,反之亦然。(双向绑定)

 

      • &&attr - 提供一个在父scope上下文中执行一个表达式的途径。如果没有指定attr的名称,那么local name将与属性名称一致。例如<widget my-attr=”count = count + value”>widgetscope定义为:{localFn:’increment()’},那么isolate scope property “localFn”会指向一个包裹着increment()表达式的function。一般来说,我们希望通过一个表达式,将数据从isolate scope传到parent scope中。这可以通过传送一个本地变量键值的映射到表达式的wrapper函数中来完成。例如,如果表达式是increment(amount),那么我们可以通过localFn({amount:22})的方式调用localFn以指定amount的值(上面的例子真的没看懂,&跑哪去了?)。

 

  • controller - controller 构造函数。controller会在pre-linking步骤之前进行初始化,并允许其他directive通过指定名称的require进行共享(看下面的require属性)。这将允许directive之间相互沟通,增强相互之间的行为。controller默认注入了以下本地对象:

 

    • $scope - 与当前元素结合的scope

 

    • $element - 当前的元素

 

    • $attrs - 当前元素的属性对象

 

    • $transclude - 一个预先绑定到当前转置scope的转置linking function :function(cloneLinkingFn)(A transclude linking function pre-bound to the correct transclusion scope)

 

  • require - 请求另外的controller,传入当前directivelinking function中。require需要传入一个directive controller的名称。如果找不到这个名称对应的controller,那么将会抛出一个error。名称可以加入以下前缀:

 

    • ? - 不要抛出异常。这使这个依赖变为一个可选项。

 

    • ^ - 允许查找父元素的controller

 

  • restrict - EACM的子集的字符串,它限制directive为指定的声明方式。如果省略的话,directive将仅仅允许通过属性声明:

 

    • E - 元素名称: <my-directive></my-directive>

 

    • A - 属性名: <div my-directive=”exp”></div>

 

    • C - class名: <div class=”my-directive:exp;”></div>

 

    • M - 注释 : <!-- directive: my-directive exp -->

 

  • template - 如果replace true,则将模版内容替换当前的HTML元素,并将原来元素的属性、class一并迁移;如果为false,则将模版元素当作当前元素的子元素处理。想了解更多的话,请查看“Creating Widgets”章节(在哪啊。。。Creating Components就有。。。)

 

  • templateUrl - template基本一致,但模版通过指定的url进行加载。因为模版加载是异步的,所以compilationlinking都会暂停,等待加载完毕后再执行。

 

  • replace - 如果设置为true,那么模版将会替换当前元素,而不是作为子元素添加到当前元素中。(注:为true时,模版必须有一个根节点)

 

  • transclude - 编译元素的内容,使它能够被directive所用。需要(模版中)配合ngTransclude使用(引用)。transclusion的优点是linking function能够得到一个预先与当前scope绑定的transclusion function。一般地,建立一个widget,创建isolate scopetransclusion不是子级的,而是isolate scope的兄弟。这将使得widget拥有私有的状态,transclusion会被绑定到父级(pre-isolatescope中。(上面那段话没看懂。但实际实验中,如果通过<any my-directive>{{name}}</any my-directive>调用myDirective,而transclude设置为true或者字符串且template中包含<sometag ng-transclude>的时候,将会将{{name}}的编译结果插入到sometag的内容中。如果any的内容没有被标签包裹,那么结果sometag中将会多了一个span。如果本来有其他东西包裹的话,将维持原状。但如果transclude设置为’element’的话,any的整体内容会出现在sometag中,且被p包裹

 

    • true - 转换这个directive的内容。(这个感觉上,是直接将内容编译后搬入指定地方)

 

    • ‘element’ - 转换整个元素,包括其他优先级较低的directive。(像将整体内容编译后,当作一个整体(外面再包裹p),插入到指定地方)

 

  • compile - 这里是compile function,将在下面章节详细讲解

 

  • link - 这里是link function ,将在下面章节详细讲解。这个属性仅仅是在compile属性没有定义的情况下使用。

 

 

九、Compile function

 

function compile ( tElement, tAttrs, transclude) { … }

  compile function用于处理DOM模版的转换。由于大多数directive都不需要转换模版,所以compile不会经常被使用到。需要compile function的directive,一般是那种需要转换DOM模版的(如ngRepeat),或者是需要异步加载内容的(如ngView)。compile function拥有一下的参数:

  • tElement - 模版元素 – 使用当前directive的元素。仅仅在当前元素或者当前元素子元素下做模版转换是安全的。
  • tAttrs - 模版属性 - 标准化的属性,在当前元素声明的,可以在各个directive之间共享。详情请看Attributes章节
  • transclude – 一个转换用的linking function:  function(scope,cloneLinking).

  注意:如果template被克隆过,那么template实例和link实例不能是同一个object。为此,在compile function中做任何除了DOM转换以外的事情,是不安全的,这将应用到所有克隆中。特别是,DOM事件监听器的注册的操作,应该在linking function中进行,而不是compile function。

  compile function 可以有一个返回值,类型可以是function或者object。

  • 返回function – 通常在不需要compile function(为空)时使用,等同于通过link(directive定义模版的属性)注册linking function。
  • 返回包含pre、post属性的object - 允许我们控制在linking phase期间何时调用linking function。详情请看下面关于pre-linking、post-linking function的章节。

 

十、Linking function

function link( scope, iElement, iAttrs, controller) { … }

  link function负责注册DOM事件监听器,也可以进行DOM的更新操作。link function会在模版克隆操作完毕之后执行。这里存放着directive大多数的逻辑。

  • scope - Scope - 被directive用于注册watches(http://docs.angularjs.org/api/ng.$rootScope.Scope#$watch)。
  • iElement - 元素实例 - directive使用的元素。只有在postLink function里面对子元素进行操作,才是安全的。因为子元素已经被link(与model连接吗?!)。
  • iAttrs - 属性实例 - 标准的当前元素的属性列表。在所有directive的linking function之间分享的。
  • controller - controller实例 - 如果在当前元素的directive中,有其中一个定义了controller,那么可以在这里获取到该controller的实例。这个controller是在所有directive之间共享的,允许各个directive将controller当作一个它们之间沟通频道。

 

Pre-link function

  在子元素linked之前执行。在这里做DOM转换是不安全的,因为compiler的linking function在link时可能会定位不到正确的元素。

Post-link function

  在子元素linked之后执行。在这里执行DOM转换是安全的。

 

十一、Attributes

  attribute object - link()compile()中作为参数 是一个访问以下东东的途径:

  • 标准化的属性名称:由于directive,例如ngBind,可以表现为多种形式,如”ng:bind”、”x-ng-bind”……这个attribute对象允许我们通过标准命名(驼峰式)访问属性。
  • directive 之间通讯:所有directive共享一个attribute对象实例,使得directive可以通过attribute 对象进行directive之间的内部通讯。
  • 支持interpolationinterpolation属性是分配到attribute对象中,允许其他directive读取该interpolated value
  • 观察interpolated属性:通过attr.$observe去观察属性值的变化,包括interpolation(例如src=”{{bar}}”)。不单单很有效,而且是简单地获取真实值唯一的办法。因为在linking阶段,interpolation还没被赋值(替换真实值),所以在这时候访问它,结果是undefined

 

复制代码
<!DOCTYPE HTML>
<html lang="zh-cn" ng-app="DirectiveProperty">
<head><meta charset="UTF-8"><title>directive-attribute-test</title><style type="text/css">.ng-cloak {display: none;}</style>
</head>
<body ng-controller="MyCtrl">
<input type="text" ng-model="name" value="myName"/>
<p my-attr="123" directive-p2 attr-dd="{{name}}"></p>
<script src="../angular-1.0.1.js" type="text/javascript"></script>
<script type="text/javascript">var app = angular.module("DirectiveProperty", []);app.controller("MyCtrl", function ($scope) {$scope.name = "my little dada";});var directiveP2 = app.directive("directiveP2", function () {return {link:function postLink(scope,lEle,lAttr) {                console.log("myAttr:" + lAttr.myAttr);//123
                console.log("myAttr:" + lAttr.attrDd);//undefinded
                lAttr.$observe('attrDd', function(value) {console.log('attrDd has changed value to ' + value); //my little dada//除此以外,还可啥办法可以拿到这个值啊。。。¥&()@#&¥(@#
                });}};});
</script>
</body>
</html>
复制代码

 

十二、理解transclusionscope

  我们经常需要一些可重用的组件。下面是一段伪代码,展示一个简单的dialog组件如何能够工作。

  
复制代码
<div><button ng-click="show=true">show</button><dialog title="Hello {{username}}."visible="show"on-cancel="show = false"on-ok="show = false; doSomething()">Body goes here: {{username}} is {{title}}.</dialog>
复制代码
  点击“show”按钮将会打开dialogdialog有一个标题,与数据“username”绑定,还有一段我们想放置在dialog内部的内容。

  下面是一段为了dialog而编写的模版定义:

复制代码
<div ng-show="show()"><h3>{{title}}</h3><div class="body" ng-transclude></div><div class="footer"><button ng-click="onOk()">Save changes</button><button ng-click="onCancel()">Close</button></div></div>
复制代码

  这将无法正确渲染,除非我们对scope做一些特殊处理。

  第一个我们需要解决的问题是,dialog模版期望title会被定义,而在初始化时会与username绑定。此外,按钮需要onOkonCancel两个function出现在scope里面。这限制了插件的效能(this limits the usefulness of the widget。。。)。为了解决映射问题,通过如下的本地方法(locals,估计在说directive定义模版中的scope)去创建模版期待的本地变量:

复制代码
scope :{title: 'bind', // set up title to accept data-binding
onOk: 'expression', // create a delegate onOk function
onCancel: 'expression', // create a delegate onCancel function
show: 'accessor' // create a getter/setter function for visibility.

}
复制代码
  在控件scope中创建本地属性,带来了两个问题:

  1. isolation(属性隔离?) 如果用户忘记了在控件模版设置title这个元素属性,那么title将会与祖先scope的属性”title”(如有)绑定。这是不可预知、不可取的。

  2. transclusion - transcluded DOM可以查看控件的localsisolate scope?),locals会覆盖transclusion中真正需要绑定的属性。在我们的例子中,插件中的title属性破坏了transclusiontitle属性。

  为了解决这个缺乏属性隔离的问题,我们需要为这个directive定义一个isolated scopeisoloted scope不是通过从child scope(这里为啥是child scope?不是parent scope吗?)原型继承的,所以我们无需担心属性冲突问题(作为当前scope的兄弟)。

  然而,isolated scope带来了一个新问题:如果transcluded DOM 是控件的isolated scope的一个子元素,那么他将不能与任何东西绑定(if a transcluded DOM is a child of the widget isolated scope then it will not be able to bind to anything)。因此,transcluded scope是原始scope的一个子scope,在控件为本地属性而创建isolated scope之前创建的。transcluded与控件isolated scope属于兄弟节点(scope树中)。

  这也许看起来会有点意想不到的复杂,但这样做让控件用户与控件开发者至少带来了惊喜。(解决了问题)

  因此,最终的directive定义大致如下:

复制代码
transclude:true,scope :{title: 'bind', // set up title to accept data-binding
onOk: 'expression', // create a delegate onOk function
onCancel: 'expression', // create a delegate onCancel function
    show: 'accessor' // create a getter/setter function for visibility.//我试过这么整,失败……请继续往下看

}
复制代码
  我尝试把上面的代码拼凑成一个完整的例子。直接复制的话,无法达到预期效果。但稍作修改后,插件可以运行了。

 

复制代码
<!DOCTYPE html>
<html ng-app="Dialog">
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title>directive-dialog</title><meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible"><script src="../angular.js" type="text/javascript"></script>
</head>
<body><div ng-controller="MyCtrl"><button ng-click="show=true">show</button><dialog title="Hello {{username}}"visible="{{show}}"on-cancel="show=false;"on-ok="show=false;methodInParentScope();"><!--上面的on-cancel、on-ok,是在directive的isoloate scope中通过&引用的。如果表达式中包含函数,那么需要将函数绑定在parent scope(当前是MyCtrl的scope)中-->Body goes here: username:{{username}} , title:{{title}}.<ul><!--这里还可以这么玩~names是parent scope的--><li ng-repeat="name in names">{{name}}</li></ul></dialog></div><script type="text/javascript">var myModule = angular.module("Dialog", []);myModule.controller("MyCtrl", function ($scope) {$scope.names = ["name1", "name2", "name3"];$scope.show = false;$scope.username = "Lcllao";$scope.title = "parent title";$scope.methodInParentScope = function() {alert("记住。。scope里面通过&定义的东东,是在父scope中玩的!!。。。");};});myModule.directive('dialog', function factory() {return {priority:100,template:['<div ng-show="visible">','    <h3>{{title}}</h3>','    <div class="body" ng-transclude></div>','    <div class="footer">','        <button ng-click="onOk()">OK</button>','        <button ng-click="onCancel()">Close</button>','    </div>','</div>'].join(""),replace:false,transclude: true,restrict:'E',scope:{title:"@",//引用dialog标签title属性的值
                    onOk:"&",//以wrapper function形式引用dialog标签的on-ok属性的内容
                    onCancel:"&",//以wrapper function形式引用dialog标签的on-cancel属性的内容
                    visible:"@"//引用dialog标签visible属性的值
                }};});</script>
</body>
</html>
复制代码

 

 

十三、Creating Components

  我们通常会期望通过复杂的DOM结构替换掉directive(所在的元素?目的大概是使directive内部复杂点,看起来牛点@_@)。这让directive成为使用可复用组件的建立应用的一个快捷方式。

  下面是一个可复用组件的例子:

复制代码
<!DOCTYPE html>
<html ng-app="ZippyModule">
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title>ZippyModule</title><meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible"><style type="text/css">.zippy {border: 1px solid black;display: inline-block;width: 250px;}.zippy.opened > .title:before { content: '▼ '; }.zippy.opened > .body { display: block; }.zippy.closed > .title:before { content: '► '; }.zippy.closed > .body { display: none; }.zippy > .title {background-color: black;color: white;padding: .1em .3em;cursor: pointer;}.zippy > .body {padding: .1em .3em;}</style><script src="../angular.js" type="text/javascript"></script>
</head>
<body><div ng-controller="MyCtrl">Title: <input ng-model="title" type="text"><br/>Text: <textarea ng-model="text" ></textarea><hr/><div class="zippy" zippy-title="Details: {{title}}...">{{text}}</div></div><script type="text/javascript">var myModule = angular.module("ZippyModule", []);myModule.controller("MyCtrl", function ($scope) {$scope.title = "这里是标题";$scope.text = "这里是内容哇。。。";});myModule.directive('zippy', function () {return {template: '<div>' +'   <div class="title">{{title}}</div>' +//这个title属于当前directive isolate scope的property'   <div class="body" ng-transclude></div>' + //这里的东西,获取的是父scope的property咯'</div>',replace:true,transclude: true,restrict:'C',scope:{title:"@zippyTitle"//绑定directive元素身上的zippy-title属性
                },link:function(scope,element,attrs) {var title = angular.element(element.children()[0]),opened = false;title.bind("click", toogle);element.addClass("closed");function toogle() {opened = !opened;element.removeClass(opened ? "closed" : "opened");element.addClass(opened ? "opened" : "closed");}}};});</script>
</body>
</html>
复制代码

 

 

历时N天。。。这玩意终于啃完了!!!明天开始下一篇!

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

相关文章

  1. 上海做双眼皮手术必咨薇琳

    ...

    2024/4/21 12:31:49
  2. 上海双眼皮手术有责薇琳

    ...

    2024/4/21 12:31:47
  3. Angular应用一个创建场景的问题分析

    问题描述&#xff1a;在hero Component页面创建hero&#xff1a; 成功创建了一个新的hero&#xff0c;id为21&#xff1a; 然而进入detail页面之后&#xff0c;看不到这个新建的hero&#xff1a; 问题排查&#xff1a; Hero detail页面&#xff0c;基于的属性是这个加了Input …...

    2024/5/7 17:38:16
  4. 双眼皮白做

    ...

    2024/4/20 16:24:32
  5. 查看如何轻松升级到Webpack

    by Yazan Aabed通过Yazan Aabed 查看如何轻松升级到Webpack (See How Easily You Can Upgrade To Webpack) I’ve written this article to narrate the adventure that happened to me when upgrading an AngularJS project from Grunt to Webpack.我写这篇文章是为了讲述将A…...

    2024/4/20 16:24:30
  6. 详解 webpack 之令人困惑的地方

    原文 Webpack——The Confusing Parts Webpack是目前基于React和Redux开发的应用的主要打包工具。我想使用Angular 2或其他框架开发的应用也有很多在使用Webpack。 当我第一次看到Webpack的配置文件时&#xff0c;它看起来非常的陌生&#xff0c;我非常的疑惑。经过一段时间的…...

    2024/4/20 16:24:29
  7. 埋线双眼皮适合哪种人做

    ...

    2024/4/23 22:49:45
  8. 双眼皮前三冰敷

    ...

    2024/5/3 5:48:34
  9. 苏州眼睛变小双眼皮变窄

    ...

    2024/4/20 16:24:28
  10. 2021-07-27微前端ali-qiankun2.4.3体验

    参考: qiankun官网 基于qiankun的微前端实践 体验技术栈 vue2-cli4,vue3-cli4,,vue3-vite,three.js vue3-vite,2.4.3不支持子应用,支持基座(据说是摇树优化把无用配置筛掉了) 然后会提示这个错误: 出现这个问题也不要慌,这个是刷新页面的时候资源错误。是配置路径不对…...

    2024/4/20 16:24:25
  11. css-loader 版本号,css-loader

    css-loader 会对 import 和 url() 进行处理&#xff0c;就像 js 解析 import/require() 一样。快速开始如果要使用 css-loader&#xff0c;你需要安装 webpack5首先&#xff0c;你需要先安装 css-loader&#xff1a; npm install --save-dev css-loader然后把 loader 引用到你 …...

    2024/4/29 1:40:59
  12. 专业音频术语中英文对照

    专业音频术语中英文对照 Source: 2009-01-12 我要投稿 论坛 Favorite AAC automatic ampltiude control 自动幅度控制 AB AB制立体声录音法 Abeyancd 暂停&#xff0c;潜态 A-B repeat A-B重复 ABS absolute 绝对的&#xff0c;完全的&#xff0c;绝对时间 ABS am…...

    2024/4/28 21:13:39
  13. Win10 UWP开发系列:使用VS2015 Update2+ionic开发第一个Cordova App

    原文:Win10 UWP开发系列&#xff1a;使用VS2015 Update2ionic开发第一个Cordova App安装VS2015 Update2的过程是非常曲折的。还好经过不懈的努力&#xff0c;终于折腾成功了。 如果开发Cordova项目的话&#xff0c;推荐大家用一下ionic这个框架&#xff0c;效果还不错。对于Cor…...

    2024/4/28 18:10:16
  14. 苏州做双眼皮来k爱思特

    ...

    2024/4/28 13:04:15
  15. angular追加html,angularJS实现动态添加,删除div方法

    要实现的功能类似下图&#xff0c;动态添加或者删除div点击 增加可添加一条div 点击删除可删除一条divHTML代码如下&#xff1a;(省略CSS样式代码了大笑)授权给:所有人已认证的用户我自己Open/DownloadView PermissionsEdit Permissions删除增加访问许可保存取消添加和删除的JS…...

    2024/5/6 6:22:55
  16. 苏州整形双眼皮选爱思特

    ...

    2024/4/27 23:49:32
  17. 苏州双眼皮来 爱思特

    ...

    2024/4/28 16:31:08
  18. 苏州双眼皮爱思特t强

    ...

    2024/4/28 6:01:03
  19. 在使用angular和swiper插件中的一些问题

    在使用angular获取swiper图片的时候swiper就不会轮播。 解决方法: 1.使用计时器的方法&#xff0c;不是最优 settimeOut(function(){mySwiper new Swiper(".swiper-container",{autoplay:true,//自动播放})}) 2.使用函数 自调 function swiper(){mySwiper n…...

    2024/4/27 23:43:53
  20. 【今日CV 视觉论文速览】22 Nov 2018

    今日CS.CV计算机视觉论文速览 Thu, 22 Nov 2018 Totally 47 papers Daily Computer Vision Papers [1] Title: HAQ: Hardware-Aware Automated Quantization Authors:Kuan Wang, Zhijian Liu, Yujun Lin, Ji Lin, Song Han [2] Title: Rethinking ImageNet Pre-training Autho…...

    2024/4/28 1:45:55

最新文章

  1. Unity射击游戏开发教程:(10)创建主界面

    主界面开发 玩游戏时,主菜单是事后才想到要做的。实际上几乎每个游戏都有一个主界面。如果你点击打开游戏并立即开始游戏,你会感到非常惊讶。本文将讨论如何创建带有启动新游戏的交互式按钮的主界面/主菜单。 主菜单将是一个全新的场景。我们将添加一个 UI 图像元素,并在图像…...

    2024/5/7 18:48:15
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/5/7 10:36:02
  3. 蓝桥杯第十五届抱佛脚(十)贪心算法

    蓝桥杯第十五届抱佛脚&#xff08;十&#xff09;贪心算法 贪心算法基本概念 贪心算法是一种在算法设计中常用的方法&#xff0c;它在每一步选择中都采取在当前状态下最好或最优&#xff08;即最有利&#xff09;的选择&#xff0c;从而希望导致结果是最好或最优的算法。 贪…...

    2024/5/5 8:38:28
  4. PHP+python高校教务处工作管理系统q535p

    开发语言&#xff1a;php 后端框架&#xff1a;Thinkphp/Laravel 前端框架&#xff1a;vue.js 服务器&#xff1a;apache 数据库&#xff1a;mysql 运行环境:phpstudy/wamp/xammp等 系统根据现有的管理模块进行开发和扩展&#xff0c;采用面向对象的开发的思想和结构化的开发方…...

    2024/5/7 9:06:56
  5. 【外汇早评】美通胀数据走低,美元调整

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2022/11/19 21:17:18
  26. 错误使用 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
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

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

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

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

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

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

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

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

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

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

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

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

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,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
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2022/11/19 21:16:58
  44. 如何在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