angular.js - angular指令中的scope属性中用&获取父作用域函数的问题
问题描述
请问为什么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='https://www.haobala.com/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>
问题解答
回答1:首先一点say打印的是name,和sex。然后你子作用域里是myName和mySex。还有say中打印的是当前环境下的name和sex,这里有个闭包的概念,举个例子
var fn ;
function test1() { var t = 1; fn = function(){console.log(t); }}function test2() { var t = 2; fn();}test1();test2(); //打印的是 1
相关文章:
1. javascript - jQuery中live事件在移动微信端下没有效果;代码如下2. javascript - 请问一下react-native 布局的时候,尺寸的大小是如何确定的呢?3. javascript - 小白求解:mac 下如何设置nodejs express的 NODE_NEV 环境变量4. javascript - avalon.js ms-on 事件绑定无效 ?5. html5 - 目前 公司App 嵌入H5页面 做个 手机支付功能 没有做过 所以 请求各位有经验的 给个思路6. mysql5.7 json查询支持7. Python如何考虑代码注入安全?8. 找一个权威、实战的微信扫码授权登录网站的开发教程或者文章9. javascript - js 修改表格元素的,可以用DOM操作实现吗?10. javascript - 实参和形参有哪些通俗的命名吗?尤其形参