实现前端页面的复用
将分解的页面写成directive. 例如下面这个样子:
angular.module('pageComponents', [], function($compileProvider){ $compileProvider.directive('commonHeader', function($compile) { return { templateUrl: 'templete/common/common_header.html', replace: true, transclude: false, restrict: 'A', scope: false }; }); $compileProvider.directive('commonFooter', function($compile) { return { templateUrl: 'templete/common/common_footer.html', replace: true, transclude: false, restrict: 'A', scope: false }; }); });
事实上,还可以更进一步,将templateUrl写成可传入的参数。但是那样的话就跟下面这个方法差不多了。
使用ng-include非常简单。请注意src的参数是表达式,如果要传静态的字符串参数,请用引号将参数包裹起来。就像下面这个例子。
<!-- header --> <ng-include src="'common_header.html'"></ng-include> <div class="container"> <!-- angular ng-view --> <div ng-view></div> <!-- /angular ng-view --> </div> <!-- Footer --> <ng-include src="'common_footer.html'"></ng-include>
对ng-include稍作处理,可以实现更复杂的功能。例如下面这个动态加载表单页面的例子,就是通过变换ng-include的src参数实现的。src中的字符串会作为表达式处理(可以是$scope中的变量),所以直接写名字的话需要使用引号。
$compileProvider.directive("dynamicFormInput", ['$http', '$templateCache', function($http, $templateCache) { return { restrict : 'E', scope : { model : '=', section : '=' }, template : '<ng:include src="tpl"></ng:include>', link : function(scope, iElement, iAttrs) { switch(scope.section.sectionTypeId) { case 1: $http.get('partials/survey/textInput.html', { cache : $templateCache }); scope.tpl = "partials/survey/textInput.html"; break; case 2: $http.get('partials/survey/selectOneOption.html', { cache : $templateCache }); scope.tpl = "partials/survey/selectOneOption.html"; break; case 6: if (scope.section.sectionId == 19) { $http.get('partials/survey/addressSelection.html', { cache : $templateCache }); scope.tpl = "partials/survey/addressSelection.html"; } break; } } } }]);
最后必须说明的是,这三种方法实质上都是利用ajax来加载模板。使用ajax来实现页面分解这样的功能,相比传统的使用后台动态脚本语言的方案,必然会 带来额外的开销。事实上,不光angularjs是这样,我所接触过的所有前端框架都是如此。这是浏览器端的宿命。这里所造成的负载和与后台动态脚本语言之间的优劣,只能由技术主管自己权衡。
ng-include
假设在我们的 controller 中
$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};
每一个 ng-include 会生成一个子 Scope,每个子Scope 都继承父Scope。
<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>输入(比如”77″)到第一个 input 文本框,则子 Scope 将获得一个新的 myPrimitive 属性,覆盖掉父 Scope 的同名属性。这可能和你预想的不一样。
输入(比如”99″)到第二个 input 文本框,并不会在子 Scope 创建新的属性,因为 tpl2.html 将 model 绑定到了一个对象属性(an object property),原型继承在这时发挥了作用,ngModel 寻找对象 myObject 并且在它的父 Scope 中找到了。
如果我们不想把 model 从 number 基础类型改为对象,我们可以用 $parent 改写第一个模板:
<input ng-model="$parent.myPrimitive">输入(比如”22″)到这个文本框也不会创建新属性了。model 被绑定到了父 scope 的属性上(因为 $parent 是子 Scope 指向它的父 Scope 的一个属性)。
相关推荐
资源名称:AngularJS前端框架特性介绍 WORD版内容简介:本文档主要讲述的是AngularJS前端框架特性介绍;AngularJS (Angular.JS) 是一组用来开发Web页面的框架、模板以及数据绑定和丰富UI组件。它支持整个开发进程,...
**AngularJS 前端管理员模版源代码详解** AngularJS 是一款由 Google 主导开发的前端 JavaScript 框架,用于构建动态、交互式的 Web 应用程序。这款框架以其强大的数据绑定和依赖注入机制著称,为开发单页应用(SPA...
**AngularJS前端开发神器:yeoman generator for Angularjs** AngularJS,由Google维护的一个开源JavaScript框架,被广泛用于构建高效、可维护的单页应用程序(SPA)。它通过提供丰富的指令和依赖注入机制,极大地...
AngularJS 的首选样式表是 Twitter Bootstrap, Twitter Bootstrap 是目前最受欢迎的前端框架
最近在做前端设计,主要使用的知识有AngularJS和nodejs来进行页面显示和数据请求、处理等工作。在设计页面比如忘记密码时,发现一个有效的设计思路是很重要的。 就以修改密码为例,要将提示信息友好的展示给用户,...
### AngularJS前端框架知识点详解 #### 一、AngularJS简介 AngularJS是一个开源的JavaScript框架,由Google维护和支持。它旨在通过HTML扩展来解决Web应用开发中的难题,并简化客户端应用的开发过程。AngularJS的...
在前端开发领域,jQuery、AngularJS和Bootstrap是三个极为重要的技术框架,它们分别在不同的层面上解决了网页开发中的各种问题,极大地提高了开发效率和用户体验。接下来,我们将详细探讨这三个技术的核心概念、应用...
《疯狂前端开发讲义——jQuery+AngularJS+Bootstrap前端开发实战》是一本深入浅出的前端开发教程,它涵盖了三个核心的前端技术:jQuery、AngularJS和Bootstrap。这些技术在现代网页开发中扮演着至关重要的角色,使得...
AngularJS 是一个强大的前端JavaScript框架,由Google维护,主要用于构建单页Web应用程序(SPA)。它引入了MVC(模型-视图-控制器)架构模式,极大地简化了动态Web页面的开发。在“angularjs Web页面框架 v13.3.0”...
AngularJS是一款由Google维护的JavaScript框架,用于构建前端Web应用。它主要专注于MVC(Model-View-Controller)架构,让开发人员能够更轻松地处理数据绑定和动态内容。AngularJS模板是其核心特性之一,它允许...
《疯狂前端开发讲义:jQuery+AngularJS+Bootstrap前端开发实战》是一本专注于前端开发的实践教程,由知名IT作者李刚编著。本书旨在帮助读者深入理解和掌握前端三大热门框架——jQuery、AngularJS和Bootstrap的使用...
在本文中,我们将深入探讨如何使用AngularJS实现页面加载与切换时的动画效果。AngularJS是一个流行的前端JavaScript框架,它提供了强大的数据绑定和模块化功能,使得开发动态Web应用变得简单。当我们谈论“页面加载...
SpringMVC+angularjs 购物车页面
AngularJS 是一个用于构建RIA的开源前端JavaScript框架,它能够与HTML内容一起使用,以创建动态网页。AngularJS通过使用双向数据绑定,可以将模型的变化自动反映到视图上,并将用户对视图的操作自动应用到模型上,...
这个"angularjs单页面应用因为播放器源码"是一个使用AngularJS开发的音乐播放器项目的源代码,旨在帮助开发者了解如何在AngularJS环境下创建交互式的用户界面,特别是与音频播放相关的功能。 在AngularJS中,单页面...
Modules在AngularJS中充当着容器的角色,用于将应用分解成逻辑上的模块。每个AngularJS应用至少包含一个模块,它负责定义应用的配置和运行阶段的行为。模块化可以让代码更加清晰,也便于组织和管理大型项目。 7. ...
AngularJS 是一个强大的前端JavaScript框架,由Google维护,主要用于构建单页Web应用程序(SPA)。它提供了丰富的功能,如数据绑定、依赖注入、指令系统、模块化等,极大地简化了Web开发流程。标题中的"angularjs ...
除此之外,书籍中可能还会涉及AngularJS与其他技术(如RESTful API、JSON、Bootstrap等)的集成,以及如何利用AngularJS进行状态管理、错误处理和安全防护。随着版本迭代,AngularJS 1.x与更新的Angular(2+)之间...