组合模块的Angular JS示例
Angular JS example for combining modules
我是Angular JS的新手,正在项目网页上尝试这些例子。它们自己的示例运行得很好,但现在我想更进一步,在一个页面中包含多个模块,以增加对单个模块的重用。
在angular网页的HTML源代码中,我在包含示例的地方找到了,例如hello和todo示例:
…
<div app-run="hello.html" class="well"></div>
…
<div app-run="todo.html" module="todoApp" class="well"></div>
…
但是仅仅在CCD_ 1(包括Angular JS)中使用这些行并提供相应的CCD_。
如何在独立文件中分离Angular JS模块,并将它们包含在一个通用网页中。(也许这也是相关的:稍后,我想让各个组件相互交流,例如通过使用一些共享的父状态)
将Angular应用程序模块化为组件的最佳方法是使用指令。指令是Angular最强大的功能之一,允许您构建可重用的组件,每个组件都有自己的HTML模板和控制器。
一个非常通用的例子是一个简单的网页,带有自定义导航栏、注册框和功能部分。像这样的页面的HTML可能看起来像这样:
<app-navbar></app-navbar>
<app-sign-up></app-sign-up>
<app-features-panel></app-features-panel>
其中CCD_ 4是简单的通用名称。我通常会缩写我正在构建的任何应用程序的名称,并在所有指令名称前加上这个。例如,对于game
应用程序,我可以将导航栏称为<gm-navbar>
。
现在,您可以构建类似于以下内容的每个指令:
angular
.module('app')
.directive('appSignUp', appSignUp);
function appSignUp() {
var directive = {
restrict: 'E',
templateUrl: 'app/appSignUp/appSignUp.directive.html',
link: link,
controller: AppSignUpController,
controllerAs: 'signUp'
};
return directive;
function link(scope, el, attr, ctrl) {
// perform DOM manipulation here
}
}
让我们简单介绍一下上面的指令定义对象(通常缩写为DDO):
•restrict: 'E'
只是指该指令被限制为<app-sign-up>
形式的Element指令。注意HTML中单词之间的短划线,但Javascript中的camelCase。这是必要的,因为HTML不能识别驼色大小写。Angular知道JS中的appSignUp
将引用HTML中的index.html
0。
•templateUrl
只是引用该指令的HTML模板所在的路径。
•link
引用您的链接函数,您应该在其中执行任何DOM操作。注意:Angular附带了一个名为jqLite
的jQuery子集,您可以使用它来操作DOM。
•controller
只是引用附加到该指令的控制器,该控制器的职责主要是将数据附加到DOM。
•controllerAs
是一个可选属性,允许您为控制器设置"别名"。通过这种方式,您可以使用signUp.pieceOfData
将数据附加到您的作用域,这使您的HTML更加具体和清晰。
至于允许各个组件(指令)相互通信,我建议创建Angular服务,以便在应用程序中获取和设置数据,然后使用依赖项注入将这些服务注入控制器。你提到了"父状态",从技术上讲,你可以将数据附加到$rootScope
,CCD_17是你整个应用程序的根范围,每个指令都可以访问。然而,我敦促你不要这样做,因为你会污染全局范围,而且这不是实现控制器之间共享状态的"角度方式",服务就是。
- 骨干模型默认值-todos.js示例中不必要的代码
- Zendesk app.js示例用于发送外部电子邮件通知或AJAX请求
- 简单的angular.js示例有时不会;t负载
- 为什么这个简单的Angular.js示例不起作用
- 将三个.js示例的webgl_loader_obj_mtl.html集成到 WebForm ASP.NET(mtlLoa
- 使用 dat 时出现问题.三.js示例中的 GUI
- Node.js示例在Windows 10上不起作用
- 使用 iewebgl 运行三个.js示例时出现异常
- Facebook React.js示例错误
- 三.js示例未显示在画布上
- 尝试将支流 D3.js示例传输到 JSFiddle
- 基本require.js示例
- Intel Edison node.js示例代码不适用于BMP 180-gy68气压计
- 有人能解释一下这个require.js示例中涉及的语法吗
- 可以't设法运行一个简单的angular js示例
- 对象和数组:参照第二个对象更改对象属性(chart.js示例)
- PDF.js示例赢得't在本地主机上运行
- 为什么Knockout js示例中没有显示姓氏
- 组合模块的Angular JS示例
- 我的typeahead,js示例出了什么问题