GVKun编程网logo

AngularJS如何知道变量何时更改?AngularJS脏检查如何工作?(angular 变更检测)

19

最近很多小伙伴都在问AngularJS如何知道变量何时更改?AngularJS脏检查如何工作?和angular变更检测这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展Angular

最近很多小伙伴都在问AngularJS如何知道变量何时更改?AngularJS脏检查如何工作?angular 变更检测这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展AngularJS + JQuery:如何使动态内容在angularjs中工作、AngularJS JQuery:如何获得动态内容在angularjs中工作、angularjs – Angular $q.when如何工作?、angularjs – Angular.js如何更改元素css类点击和删除所有其他等相关知识,下面开始了哦!

本文目录一览:

AngularJS如何知道变量何时更改?AngularJS脏检查如何工作?(angular 变更检测)

AngularJS如何知道变量何时更改?AngularJS脏检查如何工作?(angular 变更检测)

我正在阅读一些文章,以进一步了解AngularJS的工作原理。

我不理解的术语之一是Dirty Checking

究竟是什么?看起来像观察者模式,但显然更好。

你能帮我理解吗?

编辑:它也可以对谁想要了解更多有关观看的人有用的这段视频从swiip在NgEurope一些年前。

答案1

小编典典

Angular定义了所谓的摘要循环的概念。此循环可以视为一个循环,在此循环中Angular检查所有$
scope监视的所有变量是否有任何更改。因此,如果在控制器中定义了$
scope.myVar且此变量被标记为要监视,那么您将明确告诉Angular在循环的每次迭代中监视myVar的更改。

此“ digest”也称为“脏污检查”,因为在某种程度上,它会 扫描 范围以进行更改。我不能说这是比可观察的模式好还是坏。这取决于您的需求。

一些链接:

  • Angular文档
  • 有关Angular范围的博客文章

AngularJS + JQuery:如何使动态内容在angularjs中工作

AngularJS + JQuery:如何使动态内容在angularjs中工作

我正在使用jQuery和AngularJS开发Ajax应用程序。

当我使用jQuery的html功能更新div的内容(包含AngularJS绑定)时,AngularJS绑定不起作用。

以下是我正在尝试执行的代码:

$(document).ready(function() {  $("#refreshButton").click(function() {    $("#dynamicContent").html("<button ng-click=''count = count + 1'' ng-init=''count=0''>Increment</button><span>count: {{count}} </span>")  });});</style><script src="http://docs.angularjs.org/angular-1.0.1.min.js"></script><style>.ng-invalid {  border: 1px solid red;}<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script><div ng-app="">  <div id=''dynamicContent''>    <button ng-click="count = count + 1" ng-init="count=0">        Increment      </button>    <span>count: {{count}} </span>  </div>  <button id=''refreshButton''>    Refresh  </button></div>

我在具有ID的div内包含动态内容#dynamicContent,并且具有一个刷新按钮,当单击刷新时,该按钮将更新该div的内容。如果不刷新内容,增量将按预期工作,但是刷新后,AngularJS绑定将停止工作。

这在AngularJS中可能无效,但是我最初使用jQuery构建了应用程序,后来又开始使用AngularJS,因此无法将所有内容都迁移到AngularJS。非常感谢在AngularJS中实现此功能的任何帮助。

答案1

小编典典

您需要$compile先将HTML字符串插入HTML,然后再将其插入DOM中,以便angular有机会执行绑定。

在您的小提琴中,它看起来像这样。

$("#dynamicContent").html(  $compile(    "<button ng-click=''count = count + 1'' ng-init=''count=0''>Increment</button><span>count: {{count}} </span>"  )(scope));

显然,$compile必须将其注入控制器才能正常工作。

$compile文档中阅读更多内容。

AngularJS JQuery:如何获得动态内容在angularjs中工作

AngularJS JQuery:如何获得动态内容在angularjs中工作

我正在使用一个Ajax应用程序使用jQuery和AngularJS。

当我使用jQuery的html函数更新div的内容(其中包含AngularJS绑定)时,AngularJS绑定不工作。

这是一个JSFiddle版本的我想要做的。

我有一个动态内容在一个div与ID #dynamicContent,我有一个刷新按钮,将更新此div的内容,当刷新点击。增量工作原理如果我不刷新内容,但刷新后,AngularJS绑定停止工作。

这可能不是有效的AngularJS,但我最初用jQuery构建应用程序,并开始使用AngularJS后,所以我不能迁移所有的AngularJS。任何帮助获得这工作在AngularJS非常感谢。

您需要在HTML字符串上调用$ compile,然后将其插入到DOM中,这样angular才有机会执行绑定。

在你的小提琴,它会看起来像这样。

$("#dynamicContent").html(
  $compile(
    "<button ng-click='count = count + 1' ng-init='count=0'>Increment</button><span>count: {{count}} </span>"
  )(scope)
);

显然,$ compile必须注入到你的控制器中才能工作。

阅读更多在$compile documentation。

angularjs – Angular $q.when如何工作?

angularjs – Angular $q.when如何工作?

可以有人解释我$ q.when如何工作在AngularJS?
我试图分析如何$ http工作,并发现这:
var promise = $q.when(config);

这里是来自Chrome控制台的配置对象:

Object {transformRequest: Array[1],transformResponse: Array[1],cache: Object,method: "GET",url: "/schedule/month_index.html"…}
cache: Object
headers: Object
method: "GET"
transformRequest: Array[1]
transformResponse: Array[1]
url: "/schedule/month_index.html"
__proto__: Object

接下来发生什么?这个对象如何解决或拒绝?

调用$ q.when需要一个promise或任何其他类型,如果它不是一个promise,那么它将它包装在promise和调用resolve。如果你传递一个值给它,那么它永远不会被拒绝。

从文档:

Wraps an object that might be a value or a (3rd party) then-able promise into a $q promise. This is useful when you are dealing with an object that might or might not be a promise,or if the promise comes from a source that can’t be trusted.

angularjs – Angular.js如何更改元素css类点击和删除所有其他

angularjs – Angular.js如何更改元素css类点击和删除所有其他

我试图让我的两个元素切换,所以如果一个元素被点击它将删除my-class的所有引用并应用于它的self。有任何想法吗?
<span id="1" ng-ng-click="tog=my-class"></span>

<span id="2" ng-ng-click="tog=my-class"></span>

干杯!

创建一个名为selectedindex的scope属性和一个itemClicked函数:
function MyController ($scope) {
  $scope.collection = ["Item 1","Item 2"];

  $scope.selectedindex = 0; // Whatever the default selected index is,use -1 for no selection

  $scope.itemClicked = function ($index) {
    $scope.selectedindex = $index;
  };
}

然后我的模板看起来像这样:

<div>
      <span ng-repeat="item in collection"
             ng-https://www.jb51.cc/tag/dind/" target="_blank">dindex }"
             ng-click="itemClicked($index)"> {{ item }} </span>
</div>

仅供参考$ index是ng-repeat指令中的一个魔术变量。

您可以在指令和模板中使用同样的示例。

这里是一个工作plnkr:

http://plnkr.co/edit/jOO8YdPiSJEaOcayEP1X?p=preview

关于AngularJS如何知道变量何时更改?AngularJS脏检查如何工作?angular 变更检测的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于AngularJS + JQuery:如何使动态内容在angularjs中工作、AngularJS JQuery:如何获得动态内容在angularjs中工作、angularjs – Angular $q.when如何工作?、angularjs – Angular.js如何更改元素css类点击和删除所有其他的相关知识,请在本站寻找。

本文标签: