Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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
angularjs应用程序的基本行为和结构_Angularjs_Architecture_Frameworks - Fatal编程技术网

angularjs应用程序的基本行为和结构

angularjs应用程序的基本行为和结构,angularjs,architecture,frameworks,Angularjs,Architecture,Frameworks,我想把自己介绍给angularjs 尽管我已经完成了教程的学习并观看了基本的建筑视频,但我仍然在为或多或少的大规模应用程序的行为和架构而挣扎 我的应用程序有一个包含添加按钮的菜单栏。如果用户单击按钮,我希望弹出一个对话框。该对话框不是菜单的一部分: <!-- The menu --> <header class="mod modHeader" ng-controller="HeaderCtrl"> <div class="modHeader__addProjec

我想把自己介绍给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>
现在,有多个问题:

  • 我必须将HeaderCtrl应用到对话框中才能访问properties对象。这对我来说很讨厌,HeaderCtrl应该只控制我的header模块,不是吗
  • 单击时不会显示该对话框。我发现这是因为该属性在页面加载时只检查一次,并且我必须使用函数。实现我的目标的正确方法是什么
结论:

我可以把我的问题总结为:

我为页面的每个部分使用一个控制器。它们是如何通信的?

在您提供的示例代码中,将创建两个HeaderCtrl。每次使用
ng controller
都将创建一个控制器

要以角度共享数据,请使用。在需要时将该服务注入控制器、指令等

在设计Angular应用程序时,试着从模型(通常包含在服务中,然后是应用程序的其余部分)和视图的角度来考虑。控制器只是一种粘合剂,它允许我们将模型的相关部分投影到视图中

对话框是一种特殊/独特的情况,因为。听一听关于这个话题的。
我还建议查看Angular UI团队如何实现对话框:

在您提供的示例代码中,将创建两个HeaderCtrl。每次使用
ng controller
都将创建一个控制器

要以角度共享数据,请使用。在需要时将该服务注入控制器、指令等

在设计Angular应用程序时,试着从模型(通常包含在服务中,然后是应用程序的其余部分)和视图的角度来考虑。控制器只是一种粘合剂,它允许我们将模型的相关部分投影到视图中

对话框是一种特殊/独特的情况,因为。听一听关于这个话题的。 我还建议看看Angular UI团队是如何实现对话框的:

Angular structure

app-> 

    assets->
           css -> all css file
           js  -> all js file

    partials-> all html files
    vender -> third party file (like angular.js , jquery.js)

      router.js
      services.js
      filter.js
      directives.js
      controllers.js

      index.html
角结构

app-> 

    assets->
           css -> all css file
           js  -> all js file

    partials-> all html files
    vender -> third party file (like angular.js , jquery.js)

      router.js
      services.js
      filter.js
      directives.js
      controllers.js

      index.html

没有AngularJS标记,因为这是programmers.SE,而不是StackOverflow。我已将此问题标记为迁移到该社区。此外,您的问题是使用同一控制器的两个实例,这意味着它们有两个不同的作用域。他们不交流。我建议使用一个ng控制器来包装标题和对话框。没有AngularJS标记,因为这是programmers.SE,不是StackOverflow。我已将此问题标记为迁移到该社区。此外,您的问题是使用同一控制器的两个实例,这意味着它们有两个不同的作用域。他们不交流。我建议使用一个ng控制器来包装您的标题和对话框。我查找了服务内容,发现有服务、工厂和提供者。我知道它们在功能上各不相同,而且服务可能是最容易使用的。“但我如何决定选择哪一个呢?”斯普洛特恩威尔斯,再见,再次感谢你,但我可以问最后一个问题吗?您将如何扩展该服务?一个大的$objects服务于整个数据应用程序,足够简单吗?@Sprottenwels,我不确定我是否理解你的问题。您需要扩展什么?服务/工厂/提供者可以在任何需要的地方注入(例如,注入多个控制器、其他服务、多个指令等)。服务/工厂/提供者是单例的。你的单例可以包含一个事物集合,或者每个集合项可以有一个单例。我查找了服务内容,发现有服务、工厂和提供者。我知道它们在功能上各不相同,而且服务可能是最容易使用的。“但我如何决定选择哪一个呢?”斯普洛特恩威尔斯,再见,再次感谢你,但我可以问最后一个问题吗?您将如何扩展该服务?一个大的$objects服务于整个数据应用程序,足够简单吗?@Sprottenwels,我不确定我是否理解你的问题。您需要扩展什么?服务/工厂/提供者可以在任何需要的地方注入(例如,注入多个控制器、其他服务、多个指令等)。服务/工厂/提供者是单例的。您的单例可以包含一个事物集合,或者每个集合项可以有一个单例。