gpt4 book ai didi

javascript - ng-click 和 ng-show 的问题

转载 作者:行者123 更新时间:2023-11-28 20:40:54 26 4
gpt4 key购买 nike

我正在尝试在我的应用程序中制作一个小模态框架..

这是我的 Controller :

function ModalCtrl($scope){
$scope.openModal = function(name){
$scope.modalStatus = true;
}
$scope.closeModal = function(name){
$scope.modalStatus = false;
}
$scope.modal = function(){
return $scope.modalStatus;
}
$scope.modalStatus = false;
}

这是 HTML:

<div ng-controller="ModalCtrl">
<div ng-show="modal()" class="modal_window">
<h2>The title</h2>
<span>The content</span>
<a ng-click="closeModal()">Close</a>
</div>
</div>

<div ng-controller="ModalCtrl">
<a ng-click="openModal('xyz')">Open it up</a>
</div>

完全不起作用..再困惑

编辑:用 jsfiddle 更新:http://jsfiddle.net/TeYfY/

最佳答案

我还没有详细检查您的代码,但是您的 ngClick 是在 ngController 之外定义的,因此它无法访问 openModal 函数。您需要在 Controller 内使用它来访问作用域上的方法,例如:

<div ng-controller="ModalCtrl">
<div ng-show="modal()" class="modal_window">
<h2>The title</h2>
<span>The content</span>
<a ng-click="closeModal()">Close</a>
</div>

<a ng-click="openModal('xyz')">Open it up</a>
</div>

如果还有更多问题,请随时发布 Plunker 或 jsFiddle 并更新您的问题,我很乐意仔细查看并修改我的答案。

PS:此代码属于指令。

更新

OP 在评论中提到他想从另一个位置控制模式。这通常通过服务来完成:

module.factory( 'ModalService', function () {
var is_visible = false;

return {
isVisible: function ( value ) {
if ( angular.isDefined( value ) ) {
is_visible = value;
} else {
return is_visible;
}
}
};
});

在模态指令中,可以监听服务的状态:

$scope.$watch( ModalService.isVisible, function ( status ) {
$scope.isVisible = status;
});

并且可以从远程 Controller 更改服务的状态:

$scope.openModal = function () {
ModalService.setVisible( true );
}

这是高度做作且过于简单化的,但它应该说明了这一点。除了服务之外,还可以使用事件来完成组件间的通信,但大多数情况下服务更加干净。

关于javascript - ng-click 和 ng-show 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14433566/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com