Javascript 如何检测ngShow DOM更改是否完成?

Javascript 如何检测ngShow DOM更改是否完成?,javascript,angularjs,angular-directive,materialize,Javascript,Angularjs,Angular Directive,Materialize,我的网站有一个部分,当我的用户单击表上的某一行时会显示该部分: <div ng-show="showDetails"> <details item=selectedItem></details> </div> 我想做的是在ngshowdom操作完成时调用一个函数,该函数将调用$('select')。material_select()以正确的物化设置替换选择的输入字段 你知道我怎样才能看到DOM的变化吗?这是一种非常简单的方法,可以做你想做的

我的网站有一个部分,当我的用户单击表上的某一行时会显示该部分:

<div ng-show="showDetails">
   <details item=selectedItem></details>
</div>
我想做的是在ngshowdom操作完成时调用一个函数,该函数将调用
$('select')。material_select()
以正确的物化设置替换选择的输入字段


你知道我怎样才能看到DOM的变化吗?

这是一种非常简单的方法,可以做你想做的事情。假设您有一个显示表单的ngClick函数,在该函数中设置showDetails表单,您可以使用$timeout函数,该函数在检查DOM后调用。DOM的脏检查只是在摘要周期结束时检查范围值。Angular从其以前的值内部检查所有范围值,并相应地更新模型

$scope.clickHandler = function() {
  $scope.showDetails = true;
  $timeout(function(){
    // ng if has just concluded
  });
}

这是一种非常非常老套的做你想做的事情的方式。假设您有一个显示表单的ngClick函数,在该函数中设置showDetails表单,您可以使用$timeout函数,该函数在检查DOM后调用。DOM的脏检查只是在摘要周期结束时检查范围值。Angular从其以前的值内部检查所有范围值,并相应地更新模型

$scope.clickHandler = function() {
  $scope.showDetails = true;
  $timeout(function(){
    // ng if has just concluded
  });
}

您还可以组合
$timeout
服务和元素的
ng init
指令:

<div ng-init="init()" ng-if="showDetails">
  <details item=selectedItem>selectedItem</details>
</div>

选择项
注意,我用“ng if”替换了
ng show
,它将在每次重新渲染元素时激发


plunker:

您还可以将
$timeout
服务和元素的
ng init
指令组合在一起:

<div ng-init="init()" ng-if="showDetails">
  <details item=selectedItem>selectedItem</details>
</div>

选择项
注意,我用“ng if”替换了
ng show
,它将在每次重新渲染元素时激发


普朗克:

我来试试。我来试试。