Angular JS - 仪表板的最佳实践

xXP*_*2Xx 16 angularjs

我是Angular JS的新手,正在研究在更大的Django应用程序中创建一个Angular JS支持的仪表板.我已经阅读了很多关于Angular的内容,但仍然有一些问题,关于构建一个Angular应用程序的最佳方法是什么,该应用程序将包含许多独立的小部件.

据我所知,每个HTML文档只能有1个应用程序,并且页面上通常有1 ng-view调用,我的问题是我应该将每个单独的小部件设置为它自己的应用程序,还是有办法在其中呈现和控制多个模块一个应用程序?

目前我在我的文档顶部声明了ng-app

<html lang="en" ng-app="dashboard">
Run Code Online (Sandbox Code Playgroud)

如果我只能使用一次ng-view,我不确定如何渲染剩余的小部件?

我知道这个问题非常主观,可能没有完美的答案,只是寻找一些最佳实践或功能建议.

谢谢!

web*_*dev 18

有一个项目使用AngularJS实现小部件/仪表板功能.

特征:

  • 添加/删除小部件
  • 小部件拖放
  • 任何指令都可以是小部件

现场演示http://nickholub.github.io/angular-dashboard-app

演示源代码https://github.com/nickholub/angular-dashboard-app

仪表板指令本身https://github.com/nickholub/angular-ui-dashboard


Hyl*_*all 9

这是非常主观的,但使用多个控制器或指令,如果操作正确,可以为您提供所需的效果.

例如,

<html ng-app="my-dashboard">
  <body>
    <div class="Some structuring thing">
      <ng-include src="my-header.html"></ng-include>
    </div>
    <div class="Some other thing">
      <ng-include src="my-sidebar.html"></ng-include>
    </div>

    etc...

  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

然后,每个部分可以是它自己的独立组件.从那里,你可以把它分解成控制器......

<div ng-controller="my-header-text">
  <p ng-bind="title">

  etc...
</div>
<div ng-controller="my-header-login">
  <p ng-click="login()">Login</p>

  etc...

</div>
Run Code Online (Sandbox Code Playgroud)

甚至还有指令.

<my-custom-directive words="user.name"></my-custom-directive>
Run Code Online (Sandbox Code Playgroud)

这个例子真的有点过分,但重点仍然存在; 你可以通过很多方法来控制粒度.

就个人而言,这些是我喜欢遵循的规则.

  1. app每个文件一个(按照规定,也因为它有意义.)
  2. 每个DOM子树的新控制器,可以独立存在; 所以我的登录和仪表板显然有不同的目的,如果我想要粒度,我可以将每个人打破到自己的控制器,并使用services正确处理与我的应用程序的根目录的通信.我可以登录任何页面,而不仅仅是仪表板,即使没有登录和退出选项,用户也可以使用仪表板(假设非登录用户有一些默认情况),所以这些部分可以单独使用候选人为自己的控制者.
  3. 我喜欢非平凡的HTML块的自定义指令.它有助于提高可读性和重用性; 只是总是尝试使用isolate范围,如果你不能,请质疑你所做的是否真的是一个指令.写下您的指令,假设它不仅可以由您的应用程序使用,而且可以使用包含它并遵循正确API的任何类似应用程序.