Angularjs自定义指令之复制指令
2015-12-31 18:04
633 查看
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="bootstrap.min.css">
<script src="jquery.min.js"></script>
<script src="angular.js"></script>
<script src="bootstrap.min.js"></script>
<script type="text/javascript">
var app = angular.module('myapp', []);
app.directive('duplicate', function($rootScope){
return {
transclude: 'element',
replace: true,
priority: 2,
link: function(scope, elem, attrs, ctrl, transclude) {
var times = parseInt(attrs.duplicate);
var previous = elem;
var childScope;
for(var i = 0; i < times; i++) {
childScope = scope.$new();//新建scope的子scope
childScope.number = i;
transclude(childScope, function(clone){//transclude将每个childScope与clone关联, 一一对应(一对对)
// console.log(childScope.$id);
// console.log(clone.scope().$id)
previous.after(clone);//在previous与clone拼接再赋值给clone
previous = clone;
});
}
console.log(scope.$$childHead.number);//可以看到5个全是scope的子scope
console.log(scope.$$childTail.number);
console.log(scope == $rootScope)//可以看到此时指令scope就是$rootScope 因为scope:false
},
}
});
</script>
</head>
<body ng-app="myapp">
<input type='text' ng-model='number' duplicate="5" />
<br/>
<!--与上面绑定 -->
<input type="text" ng-model="$$childHead.number" />
<br/>
<input type="text" ng-model="$$childTail.number" />
</body>
</html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="bootstrap.min.css">
<script src="jquery.min.js"></script>
<script src="angular.js"></script>
<script src="bootstrap.min.js"></script>
<script type="text/javascript">
var app = angular.module('myapp', []);
app.directive('duplicate', function($rootScope){
return {
transclude: 'element',
replace: true,
priority: 2,
link: function(scope, elem, attrs, ctrl, transclude) {
var times = parseInt(attrs.duplicate);
var previous = elem;
var childScope;
for(var i = 0; i < times; i++) {
childScope = scope.$new();//新建scope的子scope
childScope.number = i;
transclude(childScope, function(clone){//transclude将每个childScope与clone关联, 一一对应(一对对)
// console.log(childScope.$id);
// console.log(clone.scope().$id)
previous.after(clone);//在previous与clone拼接再赋值给clone
previous = clone;
});
}
console.log(scope.$$childHead.number);//可以看到5个全是scope的子scope
console.log(scope.$$childTail.number);
console.log(scope == $rootScope)//可以看到此时指令scope就是$rootScope 因为scope:false
},
}
});
</script>
</head>
<body ng-app="myapp">
<input type='text' ng-model='number' duplicate="5" />
<br/>
<!--与上面绑定 -->
<input type="text" ng-model="$$childHead.number" />
<br/>
<input type="text" ng-model="$$childTail.number" />
</body>
</html>
相关文章推荐
- AngularJS基础——样式指令、DOM操作指令及其它重要指令
- angularjs 当transclude:true or elemet时如何在link函数中取得要替代模板中ng-transclude的那部分内容
- AngularJS 表单
- 如何用AngularJS构建管理后台
- 动手验证<<深入理解angularjs中的scope>>
- 在文件中的AngularJS模块
- 在body中的AngularJS模块
- angular页面间传递数据详解
- AngularJS基础——事件指令及input相关指令
- 深入理解 AngularJS 的 Scope
- AngularJS入门教程1--配置环境
- AngularJS是为了克服HTML在构建应用上的不足而设计的
- AngularJS是为了克服HTML在构建应用上的不足而设计的
- AngularJS中实现显示或隐藏动画效果的方式总结
- AngularJS中实现显示或隐藏动画效果的3种方式
- Angularjs中scope的一些属性
- 【AngularJs】---JSONP跨域访问数据传输
- angularJS的controller之间如何正确的通信
- AngularJs 父子级Controller传递数据
- AngularJS 学习笔记值post传值