zoukankan      html  css  js  c++  java
  • 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>

    显示结果:







  • 相关阅读:
    创建你自己的依赖注入容器Ioc Container(转) dodo
    LINQ to XML 介绍(转) dodo
    使用jquery修复ie6/7不支持focus的bug dodo
    ASP.NET MVC 2强类型HTML辅助方法 dodo
    Ioc容器Autofac介绍 dodo
    serverU上传中文文件乱码 dodo
    LINQ语法二 dodo
    DIV+CSS解决IE6,IE7,IE8,FF兼容问题 dodo
    依赖注入容器Autofac与MVC集成 dodo
    mvc VIEW部分介绍 dodo
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/6809061.html
Copyright © 2011-2022 走看看