Angular.js(四)

本文详细介绍了AngularJS中的各种指令,包括ng-class、ng-style、ng-attr-、ng-show/ng-hide、ng-if、ng-init、ng-include、ng-model及ng-model-options等,并通过实例展示了这些指令的具体使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ng-class:与css相似,

当样式写在<style></style>中的时候,可以通过true和false来控制是否添加该样式

<div ng-class="{active:true,active2:true}">{{ text }}</div>
ng-style:用法和css中style用法类似

两种用法:

(1)当样式写在行间的时候

<div ng-style = '{color :"green",background:"yellow"}'>{{ text }}</div>
(2)当样式写在JavaScript中时

var m1 = angular.module('myApp',[]);
m1.controller('A',['$scope',function($scope){
	$scope.text = '<h1>hello</h1>';
	$scope.style = {color :"green",background:"yellow"};
}])
<div ng-style = '{{ style }}'>{{ text }}</div>
ng-attr-(suffix 具体的属性名):属性名通用写法

JavaScript中:

var m1 = angular.module('myApp',[]);
m1.controller('A',['$scope',function($scope){
	$scope.text = 'hello';
	$scope.url= 'https://www.baidu.com';
}])
html中:也可以直接写成 ng-href(除了 ng-href  和 ng-src 以外,其他的属性要写成通用属性写法)

<a ng-attr-href = "{{ url }}" ng-attr-title="{{ text }}">{{text}}</a>
ng-show , ng-hide类似于css中的block和none

ng-show:true代表显示,false代表隐藏

ng-hide:true代表隐藏,true代表显示

ng-if:true添加节点,false删除节点(类似于DOM操作)

JavaScript中 $scope.bOn = true;

<input type="checkbox" ng-model = 'bOn'>    // 开始时是选中的状态 ---- 未选中的状态
<div ng-show = 'bOn'>123456</div>           // 显示状态 ---- 隐藏状态
<div ng-hide = 'bOn'>987654</div>           // 隐藏状态 ---- 显示状态
<div ng-if = 'bOn'>000000</div>             // 添加节点 ---- 删除节点
<div ng-switch on = 'bOn'>                       // true ---- false
	<p ng-switch-default>默认状态</p>        // 显示 ---- 隐藏
	<p ng-switch-when = 'false'>切换状态</p> // 隐藏 ---- 显示
</div>
<details ng-open = 'bOn'>                        // true ---- false
	<summary>标题</summary>       
	<p>显示内容</p>                          // 显示 ---- 隐藏
</details>

ng-init:初始化数据的指令(写在ng-controller中,但是一般采用$scope来设置,不会出现问题)

案例:输出二维数组中,每个元素的下标

<div ng-controller="A">
	<div ng-repeat="outerArr in arrList" ng-init='outerIndex = $index'>
		<div ng-repeat="innerArr in outerArr" ng-init="innerIndex = $index">
			{{ innerArr }} : {{ outerIndex }}{{innerIndex}}
		</div>
	</div>
</div>

ng-include:引入一段代码

<div ng-controller="A" ng-include="'temp.html'">

ng-model:实现双向数据的绑定, ng-model-options:来选择什么时候触发这个绑定 ng-model-options="updateOn:'执行的事件'"

案例:输入框通过失去焦点事件,触发数据的双向绑定

<input type="text" ng-model="text" ng-model-options="{updateOn:'blur'}">
<p>{{text}}</p>

ng-controller:对于面向对象的写法

var m1 = angular.module('myApp',[]);
m1.controller('A',['$scope',fn]);   // 构造函数为 fn 
function fn($scope){

}
fn.prototype.text = 'hello';       // 构造函数下的属性
fn.prototype.show = function(){    // 构造函数下的方法
	return 'show';
}
<div ng-controller = 'A as a1'>    // 函数名 as 对象名(自己命名)
	<p>{{a1.text}}</p>
	<p>{{a1.show()}}</p>
</div>

标签指令 : <a href="#></a>

<div ng-app="myApp" ng-controller = 'A'>    // 模块化 只针对 ng-app 所在的模块中
	<a href="#">1111111</a>             // angularsJs 中的标签指令,阻止了默认行为(点击链接时,不会刷新页面)
</div>
<a href="#">2222222</a>                     // 只要点击就会刷新页面

标签指令 : <select></select>

<div ng-app="myApp" ng-controller = 'A'>
	<a href="#">{{ mybind.name }}</a>  // 循环遍历数组 arrList 
	<select ng-options = 'list.name for list in arrList' ng-model="mybind">  // ng-options 和 ng-repeat 用法类似
	</select>
</div>

标签指令 : <form></form>

<form name="myForm">
	<input type="text" ng-model = "text" name="myText">
	<p>{{ myForm.myText.$valid }}</p>        // true 表单验证成功
	<p>{{ myForm.myText.$invalid }}</p>      // false 
	<p>{{ myForm.myText.$pristine }}</p>     // true 初始值未修改
	<p>{{ myForm.myText.$dirty }}</p>        // false 
	<p>{{ myForm.myText.$error }}</p>        // {} 返回的是验证信息
</form>
<form name="myForm">
	<input type="email" ng-model = "text" name="myText">
	<p>{{ myForm.myText.$valid }}</p>        // false 表单验证失败,同时输入框内不会显示内容
	<p>{{ myForm.myText.$invalid }}</p>      // true 
	<p>{{ myForm.myText.$pristine }}</p>     // true 初始值未修改
	<p>{{ myForm.myText.$dirty }}</p>        // false 
	<p>{{ myForm.myText.$error }}</p>        // {"email":true} true代表验证失败,false代表验证成功
</form>

可以通过 ng-valid{} 来设置表单的样式

<form name="myForm">
	<input type="text" ng-model = "text" name="myText" required ng-minlength= "5" ng-pattern='/^[a-zA-z]+$/'>       
	<p>{{ myForm.myText.$error }}</p>  // 不为空 ,返回false  满足正则,全为字母,返回false  最小长度不小于5,返回false
</form>
表单验证实实例:

var m1 = angular.module('myApp',[]);
m1.controller('A',['$scope',function($scope){
	$scope.verify = {
		initial:'default',
		dataList : [
			{ name : 'default', tips :'请输入用户名'},
			{ name : 'required', tips :'用户名不能为空'},
			{ name : 'pattern', tips :'用户名必须为字母'},
			{ name : 'pass', tips :'√'}
		],
		change : function(err){
			console.log(err);
			for(var attr in err){
				if(err[attr] == true){
					this.initial = attr ;
					return
				}
			}
			this.initial = 'pass';
		}
	};
	$scope.verifytwo = {
		initial:'default',
		dataList : [
			{ name : 'default', tips :'请输入密码'},
			{ name : 'required', tips :'密码不能为空'},
			{ name : 'minlength', tips :'密码不能少于六位'},
			{ name : 'pass', tips :'√'}
		],
		change : function(err){
			for(var attr in err){
				if(err[attr]  == true){
					this.initial = attr;
					return;
				}
				this.initial = 'pass';
			}
		}
	};
}]);
<div ng-controller = 'A'>
	<form name="myForm">
		<div>
			<label>用户名:</label>
			<input type="text" name='myText' ng-model="verify.name" required ng-pattern="/^[a-zA-Z]+$/" ng-blur = 'verify.change(myForm.myText.$error)'>
			<span ng-repeat="re in verify.dataList |filter : verify.initial">{{ re.tips }}</span>
		</div>
		<br>  
		<div>
			<label>密码:</label>
			<input type="password" name="myPassword" ng-model ="verifytwo.name" required ng-minlength="6" ng-blur = "verifytwo.change(myForm.myPassword.$error)">
			<span ng-repeat="re in verifytwo.dataList | filter : verifytwo.initial">{{ re.tips }}</span>
		</div>  
	</form>
</div>












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值