当前位置: 澳门新濠3559 > 服务器运维 > 正文

澳门新濠3559会调用该变量对应的监听函数

时间:2019-12-08 19:30来源:服务器运维
● Scope中的jQBtnState变量值倘诺为false让id为jQBtn的按键禁止使用●点击id为jQBtn的按键调用Scope中的有些方法让Scope中的变量counter自增1 AngularJS中的$watch(),$digest()和$apply()区分,angularjsdi

● Scope中的jQBtnState变量值倘诺为false让id为jQBtn的按键禁止使用● 点击id为jQBtn的按键调用Scope中的有些方法让Scope中的变量counter自增1

AngularJS中的$watch(),$digest()和$apply()区分,angularjsdigest

AngularJS $scope里面的$watch(卡塔尔(قطر‎,$digest(卡塔尔(قطر‎和$apply(卡塔尔(英语:State of Qatar)是AngularJS的着力函数,学习AngularJS必需清楚那多少个函数。

在绑定$scope中的变量到view的时候,AngularJS自动在里头创制二个"Watch"。"Watch"用于监听AngularJS scope中变量的改换。能够透过调用$scope.$watch(卡塔尔(英语:State of Qatar)那些点子来创制"Watch"。

澳门新濠3559会调用该变量对应的监听函数。$scope.$digest(卡塔尔国函数会循环访谈具备的watches,并检查测量试验其所监听的$scope中的变量是或不是退换。借使变量产生转移,会调用该变量对应的监听函数。监听函数能够完结广大操作,比方让html里面包车型地铁text文本展现最新的变量值。可以看到,$scope.$digest是能够触发多少绑定更新的。

绝大好些个地方下,AngualrJS会自动调用$scope.$watch(卡塔尔(قطر‎和$scope.$digest(卡塔尔(قطر‎函数,然则在一些情形下,大家须求手动调用他们,由此,有必要精通他们是怎么工作的。

$scope.$apply(卡塔尔(英语:State of Qatar)这一个函数会先进行一些代码,之后在调用$scope.$digest(卡塔尔。全数的watches会被检验一遍,相应的监听函数也会被实行。$scope.$apply(卡塔尔在AngularJS与其余javascript代码集成时是很有用的。

接下去大家具体的讲课下$watch(卡塔尔(英语:State of Qatar), $digest(卡塔尔国 和 $apply(卡塔尔。

$watch()
$watch(watchExpression, listener, [objectEquality])

watchExpression:监听目的,能够是string恐怕function(scope卡塔尔{}

listener:监听目标产生转移时实践的回调函数function(newVal,oldVal,scope卡塔尔{}

objectEquality:是不是深度监听,要是设置为true,它报告Angular检查所监督的对象中每叁个属性的成形。要是您愿意监察和控制数组的个别成分也许目的的习性并不是二个平日的值, 那么您应该利用它。(暗许值:false)

$digest() 检查测验当前scope甚至子scope中具有的watches,因为监听函数会在施行进度中期维更改model(scope中的变量卡塔尔(قطر‎,$digest(卡塔尔国会直接被调用直到model未有再变。当调用超越十三次时,$digest(卡塔尔(قطر‎会抛出一个百般"Maximum iteration limit exceeded',以此来防范程序步向一个死循环。

$apply()
$apply([exp])

exp:string或者function(scope){}

$apply(卡塔尔国生命周期伪代码暗指图如下

function $apply(expr) {
 try {
  return $eval(expr);
 } catch (e) {
  $exceptionHandler(e);
 } finally {
  $root.$digest();
 }
}

Example 上面大家由此叁个事例来注明$watch,$digest和$apply。

<script>
var module = angular.module("myapp", []);
var myController1 = module.controller("myController", function($scope) {
  $scope.data = { time : new Date() };
  $scope.updateTime = function() {
    $scope.data.time = new Date();
  }

  document.getElementById("updateTimeButton")
      .addEventListener('click', function() {
    console.log("update time clicked");
    $scope.data.time = new Date();
  });
});
</script>
<body ng-app="myapp">
<div ng-controller="myController">
  {{data.time}}

  <br/>
  <button ng-click="updateTime()">update time - ng-click</button>
  <button id="updateTimeButton" >update time</button>
</div>
</body>

这段代码会绑定$scope.data.time到HTML中呈现出来,同时这几个绑定会自动成立一个watch来监听$scope.date.time的改动。别的,这里还会有2个按键,第多少个按键是透过ng-click Directive来调用$scope.update提姆e方法,之后AngularJS会自动施行$scope.$digest(卡塔尔(قطر‎使新型的时刻展现到HTML中。第二个开关是通过javascript代码加多贰个点击事件,以此来更新HTML中的时间。可是第二个按键是不可能源办公室事的,它的消逝办法是在点击事件的末段手动的去调用$scope.$digest(卡塔尔国方法,如下:

document.getElementById("updateTimeButton")
    .addEventListener('click', function() {
  console.log("update time clicked");
  $scope.data.time = new Date();
  $scope.$digest();
});

其余三个解决办法是调用$scope.$apply(卡塔尔(英语:State of Qatar),如下:

document.getElementById("updateTimeButton")
    .addEventListener('click', function() {
  $scope.$apply(function(){
      console.log("update time clicked");
      $scope.data.time = new Date();
    }
  );
});

如上正是本文的全体内容,希望对我们的读书抱有利于。

$.on{console.log("JQuery button clicked");//需要考虑的问题是://这里如何调用Scope中的某个方法,使Scope的的变量counter自增1})

myApp.controller("NGCtrl", function{$scope.counter = 0;//这里,怎么让jQBtnState变量值发生变化告之外界呢?$scope.jQBtnState = false;$scope.jQBtnClick = function(){$scope.counter++;}}) 

你也许感兴趣的稿子:

  • angularJS中$apply(卡塔尔方法详整

AngularJS $scope里面包车型客车$watch(卡塔尔,$digest(卡塔尔(英语:State of Qatar)和$apply(卡塔尔国是AngularJS的主干函数,学习AngularJS必需明白...

上述所述是针对性AngularJS中监视Scope变量以致外界调用Scope方法 的相关文化,希望对大家具备助于。

在AngularJS中,不经常候必要监视Scope中的某个变量,因为变量的转移会潜濡默化局地分界面成分的显得。一时,也愿意因此jQuery调用Scope的有个别方法。

外部怎么调用Scope的章程吗?

实际上,使用$watch方法可以监视Scope有个别变量的转移,当变化发生调用回调函数。

如上,通过拿到Scope,使用$apply方法调用Scope内的jQBtnClick方法使Scope呢的变量counter自增1。

jQ Button Toggle jQ button stateCounter: {{counter}} 
myApp.controller("NGCtrl", function{$scope.counter = 0;$scope.jQBtnState = false;$scope.$watch("jQBtnState", function.attr;});$scope.jQBtnClick = function(){$scope.counter++;}})
--先获取Scope,然后使用$apply方法调用Scope内的方法。$.on{console.log("JQuery button clicked");var scope = angular.element;scope.$apply{scope.jQBtnClick 

上述,当jQBtnState变量值为false的时候就能禁止使用id为jQBtn的开关。

编辑:服务器运维 本文来源:澳门新濠3559会调用该变量对应的监听函数

关键词: