請問為什麼alert中最後彈出的資料是父作用域的
點選執行子域的say方法的結果
程式碼如下:
<p ng-app="myModule">
<h3>请分别修改父、子作用域表单里的值</h3>
<p ng-controller="myController">
父作用域:<br/>
<input type="text" ng-model="name" /><br/>
<input type="text" ng-model="sex" /><br/>
<input type="button" ng-click="say()" value="点击执行父域的say方法" /><br/>
子作用域:<br/>
<my-directive my-name="{{name}}" my-sex="sex" get-name='say()'></my-directive><br/>
</p>
</p>
<script src="../angular-1.5.8/angular.js"></script>
<script type="text/javascript">
var myModule = angular.module("myModule", []);
myModule.controller("myController", ['$scope', function($scope){
$scope.name = "wangmeijian";
$scope.sex = "boy";
$scope.say = function(){
alert( $scope.name +" is a"+ $scope.sex )
}
}])
myModule.directive("myDirective", function(){
return {
restrict: "EA",
scope: {
myName: "@",
mySex: "=",
getName: "&"
},
template: "<input type='text' ng-model='myName' /><br/>"+
"<input type='text' ng-model='mySex' /><br/>"+
"<input type='button' ng-click='getName()' value='点击执行子域的say方法' />",
}
})
</script>
首先一點say印的是name,和sex。然後你子作用域裡是myName和mySex。
還有say中印製的是當前環境下的name和sex,這裡有個閉包的概念,舉個例子
var fn ;