Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS控制器-与视图元素交互?_Javascript_Angularjs - Fatal编程技术网

Javascript AngularJS控制器-与视图元素交互?

Javascript AngularJS控制器-与视图元素交互?,javascript,angularjs,Javascript,Angularjs,在看了AngularJS的最佳实践之后,他们声明不应该在控制器中进行DOM操作,我完全同意这一点 所以,假设我正在使用Twitter引导,并在那里显示一个模式对话框。 如果要从控制器中的函数关闭此对话框 那我就不能到处做$('registerDialog').modal('hide');因为这是将控制器绑定到DOM元素 从控制器内部执行此操作的正确方法是什么?Angular使用$scope与DOM之间的数据绑定来执行此类操作。 如果要在发生事件时隐藏弹出窗口,则应在模式对话框的根上使用ng hi

在看了AngularJS的最佳实践之后,他们声明不应该在控制器中进行DOM操作,我完全同意这一点

所以,假设我正在使用Twitter引导,并在那里显示一个模式对话框。 如果要从控制器中的函数关闭此对话框

那我就不能到处做$('registerDialog').modal('hide');因为这是将控制器绑定到DOM元素


从控制器内部执行此操作的正确方法是什么?

Angular使用$scope与DOM之间的数据绑定来执行此类操作。 如果要在发生事件时隐藏弹出窗口,则应在模式对话框的根上使用ng hide指令,并将其绑定到作用域上存在的布尔值。 首先,如果要在作用域上设置此值,则必须在控制器中执行以下操作:

$scope.isModalHidden = <true|false>
$scope.isModalHidden=
如果这是由于异步操作(例如超时/服务器响应)而发生的情况,则应将前面的语句打包,如下所示:

$scope.$apply(function(){
  $scope.isModalHidden = <true|false>
});
<div id="registerDialog" ng-hide="{isModalHidden}">...</div>
$scope.$apply(函数(){
$scope.isModalHidden=
});
这将导致Angular重新评估isModalHidden,即使它没有作为“自然”事件流的一部分进行更改

完成后,只需将其绑定到DOM,如下所示:

$scope.$apply(function(){
  $scope.isModalHidden = <true|false>
});
<div id="registerDialog" ng-hide="{isModalHidden}">...</div>
。。。

我希望这能有所帮助。

您是否有单独的对话框控制器?如果有,您应该能够使用
dialog.close()关闭对话框不,我没有一个单独的控制器,但即使我有,也需要有一个.modal('hide');对实际视图元素的调用已完成。。。还是我遗漏了什么?是的,你遗漏了。让我给你一个链接!对话框只是另一个视图,因此需要另一个控制器。看看这个: