angularjs学习之八(angularjs中isolate scope的使用)

angular js中指令directive有个特别实用的东西,那就是 isolate scope (被隔离的scope)

关于详细他和全局的scope 有什么差别。能够參考以下这篇博文:

AngularJS 全局scope与Isolate scope通信

本文主要解说 其详细的几种使用方式:

1. = 的使用

[html]
		 <div class="card" ng-repeat="app in apps">
           <app-info info="app"></app-info>
         </div>
	     [js]
	     app.directive(‘appInfo‘, function() {
			  return {
				restrict: ‘E‘,
				scope: {
				  info: ‘=‘ //假设是 = 就是info属性的值 赋给 当前scope.info
				},
				templateUrl: ‘js/directives/appInfo.html‘
			  };
			});

2. =属性名 的使用

[html]
	     <div ng-controller="AppCtrl as appctrl">
           Ctrl
           <input type="text" ng-model="appctrl.ctrlFlavor">

           Dir
           <div ab="25" drink="123456" flavor="appctrl.ctrlFlavor"></div>
        </div>

        [js]
		var app = angular.module("drinkApp", []);

		app.controller("AppCtrl", function() {
			var appctrl = this;
			appctrl.ctrlFlavor = "blackberry";
		});

		app.directive("drink", function() {
			return {
				scope: {
					flavor: "=ab"
				},
				template: ‘<input type="text" ng-model="flavor">‘
			};
		});

显示结果:

3. @ = 和 & 的综合使用

html 代码:

<div class="mainController" ng-app="isolateApp">
	     <div ng-controller="AppCtrl">
		     <div class="row">
			     <character
				 name="Roman Regins"
				 image="img/p1.jpg"
				 movetype="movetype"
				 use-move="getMove(name,movetype,move)"
				 class="col-xs-4"></character>
				 <character
				 name="Seth Rollins"
				 image="./img/p2.jpg"
				 movetype="movetype"
				 use-move="getMove(name,movetype,move)"
				 class="col-xs-4"></character>
				 <character
				 name="Dean Ambrose"
				 image="./img/p3.jpg"
				 movetype="movetype"
				 use-move="getMove(name,movetype,move)"
				 class="col-xs-4"></character>
			 </div>
		 </div>
	  </div>

js控制:

//显示@ = 和 &综合的
	   var app = angular.module(‘isolateApp‘,[]);
	   app.controller("AppCtrl",[‘$scope‘,"$element",function($scope,$element){
	       $scope.getMove = function(name,movetype,move){
			   console.log(name+‘$$$‘+movetype+‘$$$‘+move);
		   }
		   $scope.movetypes = [‘amove‘,‘bavi‘,‘cmp4‘];
           $scope.movetype = $scope.movetypes[0];
	   }])
       .directive("character",function(){
	       return {
			   restrict:"E",
			   scope:{
				   name:"@",  //@指的是属性的值赋给name 仅此而已
				   image:"@",
				   movetype:"=", //表示类型等于当前属性的值
				   useMove:"&" //&表示相应的函数的引用 及该属性相应的函数别名就是他了
			   },
			   controller:"AppCtrl", //仅仅有这里声明了 才会将select选项加载进来
			   replace:true,
			   templateUrl:"shield_isolate.html"
		   };
	   })

模板:

<script type="text/ng-template" id="shield_isolate.html">
	    <div class="panel panel-default">
			<div class="panel-body">
				<div>
					<figure>
					   <img src="{{image}}">
					   <figcaption>{{name}}</figcaption>
					</figure>
				</div>
			</div>
			<div>Move:
			   <input type="text" ng-model="value" class="form-controller"/>
			</div>
			<div>
			   Select Move Type:
			   <select ng-model="movetype"
				   ng-options="movetype for movetype in movetypes">
			   </select>
			</div>
			<div class="panel-footer clearfix">
				<div class="btn btn-primary"
				  ng-click="useMove({name:name,movetype:movetype,move:value})"
				>Action!</div>
				//这里的":"前的三个參数分别相应 父函数的三个參数的名称
				//":" 后的三个參数则相应 给定值scope 的三个属性 以便一一相应传值
			</div>
		</div>
	</script>

显示结果:

时间: 2024-11-17 14:03:27

angularjs学习之八(angularjs中isolate scope的使用)的相关文章

angularjs学习笔记3-directive中scope的绑定修饰符

在angularjs中,一个directive返回一个对象,对象存在很多属性,并且可以在directive中自定义自己的scope,而使用自己的scope是为了防止一个directive被使用在多个地方之间发生相互影响,通常这个scope可以被定义为true或者对象,当这个scope被定义为true时,代表这个指令拥有独立的scope,它被多次使用在多个地方之间不会相互影响,例如: HTML代码 <!doctype html> <html ng-app="MyModule&qu

Angularjs学习---ubuntu12.04中karma安装配置中常见的问题总结

karma启动时出现了很多问题: 1.安装karma前提条件 安装karma首先要安装nodejs,npm然后才可以安装karma.nodejs,npm的安装过程可以参考文章:Angularjs学习---angularjs环境搭建,ubuntu 12.04下安装nodejs.npm和karma 2.安装karma步骤 karma官方指导教程:http://karma-runner.github.io/0.12/intro/installation.html 1).首先执行下面命令: npm in

AngularJs学习笔记(3)——scope

AngularJS启动并生成视图时,会将根ng-app元素同$rootScope进行绑定. $rootScope是所有$scope对象的最上层,是AngularJS中最接近全局作用域的对象 . 一个ng-app可以有多个controller,$scope的范围局限于每一个controller中 $scope对象就是一个普通的JavaScript对象,我们可以在其上随意修改或添加属性 作用域提供了监视数据模型变化的能力 ,$scope的所有属性,都可以自动被视图访问到 作用域是应用状态的基础.基于

Angularjs学习---官方phonecat实例学习angularjs step0 step1

接下来一系列的文章都是学习https://docs.angularjs.org/tutorial的笔记,主要学习的angular-phonecat项目的实现,来介绍angularjs的使用. 1.下载angular-phonecat 使用git clone phonecat: git clone --depth=14 https://github.com/angular/angular-phonecat.git 可以把--depth=14去掉,这里是拉最新的14个commit. The --de

angularjs 中的scope继承关系——(2)

转自:http://www.lovelucy.info/understanding-scopes-in-angularjs.html angularjs 中的scope继承关系 ng-include 假设在我们的 controller 中, $scope.myPrimitive = 50; $scope.myObject = {aNumber: 11}; HTML 为: <script type="text/ng-template" id="/tpl1.html&quo

AngularJS 全局scope与Isolate scope通信

在项目开发时,全局scope 和 directive本地scope使用范围不够清晰,全局scope与directive本地scope通信掌握的不够透视,这里对全局scope 和 directive本地scope的使用做一个总结. 一.scope作用域 1.AngularJS中,子作用域一般都会通过JavaScript原型继承机制继承其父作用域的属性和方法.但有一个例外:在directive中使用scope: { ... },这种方式创建的作用域是一个独立的"Isolate"作用域,它也

一些关于angularJS的自己学习和开发过程中遇到的问题及解决办法

这篇文章也许会不定时更新,主要记录这段时间内自己遇到的angularjs学习开发的一些问题的解决办法.本文以摘抄为主,主要目的还是将自己遇到的困惑在各个地方查到的解决办法的汇总,给自己留个备忘吧. 1.新手在初次使用angularJS router的时候往往会忘记引用angular-route.min.js以及注入相关依赖,导致类似 Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.2.0rc1/$injecto

AngularJS学习--- AngularJS中数据双向绑定(two-way data-binding) orderBy step4

1.切换工作目录 git checkout step-4 #切换分支,切换到第4步 npm start #启动项目 2.代码 app/index.html Search: <input ng-model="query"> Sort by: <select ng-model="orderProp"> <option value="name">Alphabetical</option> <opti

AngularJS学习--- AngularJS中XHR(AJAX)和依赖注入(DI) step5

前言:本文接前一篇文章,主要介绍什么是XHR,AJAX,DI,angularjs中如何使用XHR和DI. 1.切换工具目录 git checkout -f step-5 #切换分支 npm start #启动项目 2.什么是XHR和依赖注入(Dependency Injection)? 1)什么是XHR? XHR是XMLHttpRequest的简称,XMLHttpRequest 用于在后台与服务器交换数据,主要是为了实现在不重新加载整个网页的情况下,对网页的某部分进行更新.简单说,浏览器中URL