簡(jiǎn)介
? ? ? ? 上一節(jié)講了自定義指令的配置項(xiàng),這一節(jié)我們看下自定義指令的作用域蕾总,自定義指令在開(kāi)發(fā)中對(duì)于功能的抽取有著至關(guān)重要的作用戴尸,努力加油吧粟焊!????
例子
? ? ? ? <div ng-app="myController">
? ? ? ? ? ? ? ? <h1>父級(jí)消息:{{msg}}</h1>
? ? ? ? ? ? ? ? <input type="text" ng-model="count" />
? ? ? ? ? ? ? ? <my-directive parent-msg="Angular" myname="AngularJs" pmsg2="{{msg}}" pmsg3="count" p-fun="fun(msg)"></my-directive>
????????</div>
? ? ? ? <script>
? ? ? ? ? ? ? ? var app = angular.module("myController", []);
? ? ? ? ? ? ? ? app.controller("myController",["$scope",function($scope){
? ? ? ? ? ? ? ? ? ? ? ? //angular會(huì)默認(rèn)創(chuàng)建一個(gè)指令作用域并原型式繼承父級(jí)作用域
? ? ? ? ? ? ? ? ? ? ? ? $scope.pmsg = "父消息";
? ? ? ? ? ? ? ? ? ? ? ? $scope.count = 0;
? ? ? ? ? ? ? ? ? ? ? ? $scope.fun = function(val) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? console.log(val+"被觸發(fā)");
????????????????????????}
????????????????}]);
? ? ? ? ? ? ? ? app.directive("myDirective",function() {
? ? ? ? ? ? ? ? ? ? ? ? return {
? ? ? ? ? ? ? ? ? ? ? ? ? ? //scope:false,
? ? ? ? ? ? ? ? ? ? ? ? ? ? scope: {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? parentMsg: "@",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? myname:"@",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? name:"@myname",//myname第二種寫法
? ??????????????????????????????pmsg2:"@",//拿到父級(jí)作用域的值
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pmsg3:"=",//雙向數(shù)據(jù)綁定
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pFun: "&"
????????????????????????????},
? ? ? ? ? ? ? ? ? ? ? ? ? ? template:`
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????<div>
????????????????????????????????????????????<h1>自定義指令</h1>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <h2>繼承于父級(jí)作用域:{{pmsg}}</h2>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <input type="text" ng-model="msg" />
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <h1>{{parentMsg}}</h1>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <h1>{{myname}}</h1>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <h1>{{name}}</h1>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <h1>{{pmsg2}}</h1>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <h1>{{pmsg3}}</h1>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <input type="text" ng-model="pmsg3" >
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <button ng-click="pFun({msg:parentMsg})">點(diǎn)擊</button>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? </div>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? `
????????????????????????}
????????????????})
????????</script>
? ? ? ? scope: 如果scope指定為false,指令會(huì)繼承自己的父級(jí)作用域孙蒙。(非常不嚴(yán)謹(jǐn)项棠,不建議使用),當(dāng)scope指定為true時(shí)挎峦,指令會(huì)創(chuàng)建自己的作用域香追,并繼承父級(jí)作用域。
? ? ? ? scope:{}當(dāng)scope為對(duì)象時(shí)坦胶,表明創(chuàng)建的是隔離作用域透典,這時(shí)候此作用域與其他作用域不產(chǎn)生依賴或影響(非常強(qiáng)大)
父子傳值:@
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?不積跬步無(wú)以至千里,不積小流無(wú)以成江海 ? ?