Angular.js中ng-include用法及多标签页面的实现方式详解
前言
大家在平时的项目开发中,应该会经常遇到上图所示的需求,就是在一个页面中有多个标签,被选中的标签颜色会高亮显示,切换不同标签显示相应的不同内容。如果内容代码过多则写在同一个html文件就会显得特别乱,所以这里我们最好把页面代码分开单独管理,controller也可以分开来管理,这样就会显得清楚的多。
这里就要使用到Angularjs中个ng-include指令。下面来看看详细的介绍:
一、多标签的编写
首先需要了解需求:
1.同时只能选中一个标签
2.被选中的标签背景色以及自体颜色都将改变。
第一个需求我们可以使用一个flag变量来控制,即一个是flag另一个则是!flag。而第二个需求则可以使用ng-class指令来完成,提前把两个样式的class写好,通过ng-class来判断何时显示何种样式即可。
这里我把所有的逻辑代码都写在了HTML页面中,首先在页面初始化的时候使用ng-init指令初始化一个flag变量,使用ng-class绑定不同的样式,然后使用ng-click事件来动态改变flag。
代码如下:
<ion-view ng-init="test=true"> <div class="bar bar-header bar-royal"> <div class="title">Test</div> </div> <div class="bar bar-subheader"> <div class="button-bar"> <a class="button" ng-class="test?'button-positive':''" ng-click="test=true">button1</a> <a class="button" ng-class="!test?'button-positive':''" ng-click="test=false">button2</a> </div> </div> <ion-content class="has-subheader"> </ion-content> </ion-view>
二、Ng-Include的使用
多标签button编写好了,需要对点击的button展示对应的页面内容,这里使用ng-include来管理代码。如下:
<ion-content class="has-subheader"> <div ng-show="test" ng-include="'template/template1.html'">这里不管写什么都不会展示,完全被ng-include取代</div> <div ng-show="!test" ng-include="'template/template2.html'"></div> </ion-content>
这里我使用的是ng-show,即在页面加载的时候就把全部的内容加载完毕了,可以起到一个预加载的效果,当然,如果需要点击对应button的时候再展示相应的内容则可以使用ng-if,效果一样。
ng-include后面写的是html文件对应的url地址,是相对于index.html的地址。
来看一下template1的代码:
<div ng-controller="template1Controller"> <div class="row"> <div class="col text-center" ng-repeat="x in tests">{{x.name}}</div> </div> </div>
我对template1进行了单独的controller管理,Ctrl代码为:
angular.module('includeExample', ['ionic']) .controller('template1Controller', ['$scope', function ($scope) { $scope.tests = [ { name: 'test1' }, { name: 'test2' }, { name: 'test3' } ] }]);
到这,Ng-Include的用法大概就说完了,我觉得在项目的开发中还是比较有用的,分开管理逻辑和页面都会比较清晰,也会在一定程度上提高开发效率。
效果为:
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用Angular.js能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
- 创建 GitHub 仓库的步骤及方法
- React Native和原生app通信机制详解
- Python高效编程技巧
- 模块和处理程序之通过HttpModule和HttpHandler拦截入站HTTP请求执行指定托管代码模块
- iOS如何实现多个环境一次打包
- iOS 轻量级存储
- 深入理解React Native页面构建渲染原理
- React native城市列表组件
- iframe 解析
- React Native之StyleSheet样式表
- jQuery对象扩展方法(Extend)深度解析
- 线程同步:System.Core中新的读写锁
- ios动画
- IntelliJ IDEA 中 Project 和 Module 的概念及区别
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 要一遍做对——LeetCode题目20:有效的括号
- 双指针算法练习(一)
- 一般是面试的热身题——LeetCode题目21:合并两个有序链表
- LeetCode题目22:括号生成
- OpenGL ES 3.0 | 着色器编译器
- LeetCode题目23:合并K个排序链表
- LeetCode题目24:两两交换链表中的节点
- 最难链表题——LeetCode题目25:K 个一组翻转链表
- LeetCode题目26:删除排序数组中的重复项
- PCA算法原理及实现
- LeetCode题目27:移出元素
- LeetCode题目28:实现strStr()
- LeetCode题目29:两数相除
- LeetCode题目30:串联所有单词的子串
- LeetCode题目31:下一个排列