02 Angular介绍.txt

UP 返回
1. 表达式 双向绑定 初始化指令	(视频参 F:\2019年4月黑马程序员教程\05-黑马JavaEE49期全套\17品优购电商系统开发\阶段一\2品牌管理\1前端框架AngularJS入门\28_04.AngularJS入门小demo(1-3))
	新建demo1.html,将 \资源\前端相关\angularjs 下的angular.min.js复制到同目录下
		<html>
			<head>
				<title>入门小Demo-1</title>
				<script src="angular.min.js"></script>
			</head>
			<body ng-app ng-init="myname='陈大海'">		<!-- ng-app是使用angular必须要加的指令。ng-init初始化指令,可以预先复制或这行方法  -->
			{{100+100}}									<!-- 表达式 -->
			<hr>
			
			请输入你的姓名:<input ng-model="myname"><input ng-model="myname">		<!-- 双向绑定 -->
			<br>
			{{myname}},你好
			<hr>
			
			</body>
		</html>

2. 控制器	(视频 29_05.AngularJS入门小demo4)
		<html>
			<head>
				<title>入门小Demo</title>
				<script src="angular.min.js"></script>
				<script>
					//建立模块 (参数意义:模块名 引入的其他模块)
					var app=angular.module("myApp",[]);
					//通过模块创建控制器 $scope就是控制层和视图层交换数据的桥梁
					app.controller('myController',function($scope){
						//添加一个add的函数属性
						$scope.add=function(){
							return parseInt($scope.x)+parseInt($scope.y);
						}
					});		
				</script>
			</head>
			<body ng-app="myApp" ng-controller="myController">	<!-- 指定模块和控制器 -->
			第一个数:<input ng-model="x" >
			第二个数:<input ng-model="y" >
			运算结果:{{add()}}
			</body>
		</html>

3.事件 (就是将上面的例子改成用button触发  视频 30_06.AngularJS入门小demo(5-6))
		<html>
			<head>
				<title>入门小Demo</title>
				<script src="angular.min.js"></script>
				<script>
					var app=angular.module("myApp",[]);
					app.controller('myController',function($scope){
						$scope.add=function(){
							$scope.z= parseInt($scope.x)+parseInt($scope.y);
						}
					});
				</script>
			</head>
			<body ng-app="myApp" ng-controller="myController">	<!-- 指定模块和控制器 -->
			第一个数:<input ng-model="x" >
			第二个数:<input ng-model="y" >
			<button ng-click="add()">相加</button>
			运算结果:{{z}}
			</body>
		</html>

4.循环
		<html>
			<head>
				<title>入门小Demo</title>
				<script src="angular.min.js"></script>
				<script>
					var app=angular.module("myApp",[]);
					app.controller('myController',function($scope){
						$scope.list=[102,100,203,555]
						
						$scope.dataList=[
							{name:"张三",shuxue:100,yuwen:100},
							{name:"李四",shuxue:50,yuwen:90},
							{name:"王五",shuxue:60,yuwen:70},
						];
					});
				</script>
			</head>
			<body ng-app="myApp" ng-controller="myController">	<!-- 指定模块和控制器 -->
				<table>
					<tr ng-repeat="x in list">
						<td>{{x}}</td>
					</tr>
				</table>
				
				<table>
					<tr>
						<td>姓名</td>
						<td>数学</td>
						<td>语文</td>
					</tr>
					<tr ng-repeat="x in dataList">
						<td>{{x.name}}</td>
						<td>{{x.shuxue}}</td>
						<td>{{x.yuwen}}</td>
					</tr>
				</table>
			</body>
		</html>

5.从服务器获取列表	需要在tomcat下运行项目,访问http://localhost:8082/demo.html
  参项目 D:\ProjectCodes\eclipse_pyg\dubboxdemo-web	,代码如下:
	demo.html :
		<html>
			<head>
				<title>入门小Demo</title>
				<script src="angular.min.js"></script>
				<script>
					//建立模块
					var app=angular.module("myApp",[]);
					//建立控制器		function中的参数就可以看成是依赖注入,要用什么就引入什么
					app.controller('myController',function($scope,$http){
						$scope.findList=function(){
							$http.get("data.json").success(
								function(response){
									console.log(response)
									$scope.dataList=response;	
								}
							);
						}
						//对于方法findList的调用,如果不想用ng-init也可以直接用下面这句。区别是如果这样写所有引入了这个模块的都会直接调用一次,并不一定是想要的结果
						//$scope.findList();
					});
				</script>
			</head>
			<body ng-app="myApp" ng-controller="myController" ng-init="findList()">
				<table>
					<tr>
						<td>姓名</td>
						<td>数学</td>
						<td>语文</td>
					</tr>
					<tr ng-repeat="x in dataList">
						<td>{{x.name}}</td>
						<td>{{x.shuxue}}</td>
						<td>{{x.yuwen}}</td>
					</tr>
				</table>
			</body>
		</html>

	data.json:
		[
			{"name":"张三","shuxue":100,"yuwen":100},
			{"name":"李四","shuxue":50,"yuwen":90},
			{"name":"王五","shuxue":60,"yuwen":70},
			{"name":"滴滴","shuxue":60,"yuwen":55}
		]

6. 在solr高亮显示的视频中(\10搜索解决方案-Solr-2\1高亮显示),会发现高亮显示的html代码原样输出并没有效果,这是angularJS为了防止html攻击采取的安全机制。
    要用到$sce服务的trustAsHtml方法来实现转换。(同理也会有个trustAsJs的方法,以后再看),这里使用过滤器功能:
	(1)修改base.js 
		// 定义模块:
		var app = angular.module("pinyougou",[]);
		/*$sce服务写成过滤器*/
		app.filter('trustHtml',['$sce',function($sce){
		    return function(data){
		        return $sce.trustAsHtml(data);
		    }
		}]);
	(2)使用过滤器
		ng-bind-html指令用于显示html内容
		竖线 |用于调用过滤器
		<div class="attr" ng-bind-html="item.title | trustHtml"></div>

7. angular前端代码写法:
  三元运算:		采用三元判断的方式来动态组合字符串
	<li class="prev {{isTopPage()?'disabled':''}}">
		<a href="#" ng-click="queryByPage(searchMap.pageNo-1)">«</a>
	</li>












DOWN 返回