我正在尝试将自己介绍给 angularjs。
尽管我已经完成了教程并观看了基本的构建视频,但我仍然在为或多或少的大规模应用程序的行为和架构苦苦挣扎。
我的应用程序有一个包含添加按钮的菜单栏。如果用户单击按钮,我希望弹出一个对话框。该对话框不是菜单的一部分:
<!-- The menu -->
<header class="mod modHeader" ng-controller="HeaderCtrl">
<div class="modHeader__addProject" ng-click="openAddDialog()">
<i class="icon-plus icon-2x"></i>
</div>
</header>
<!-- the dialog -->
<div class="modNewProject" ng-show="properties.AddDialogVisibility" ng-controller="HeaderCtrl">
<!-- content stripped out -->
</div>
我的意图是在properties
我的控制器范围内创建一个对象HeaderCtrl
,然后在单击所述按钮时更改一个布尔值。
// HeaderCtrl
function HeaderCtrl($scope){
$scope.properties = {
"AddDialogVisibility": false
};
$scope.openAddDialog = function () {
$scope.properties.AddDialogVisibility = true;
};
}
现在,有多个问题和疑问:
- 我必须将 HeaderCtrl 应用于我的对话框才能访问属性对象。这对我来说很讨厌,HeaderCtrl 应该只控制我的标题模块,不是吗?
- 单击时不会显示对话框。我发现这是因为该属性仅在页面加载时检查一次,并且我必须使用一个函数。实现我的目标的正确方法是什么?
结论:
我想说我可以将我的问题总结为:
我为页面的每个部分使用一个控制器。他们如何沟通?