angularjs 子指令 DOM 加载速度不够快
angularjs child directive DOM doesn't load fast enough
嗨,我有嵌套指令,其中我有一个父指令以及可以包含的子指令。 我的问题是,当尝试在父链接函数中找到一些 dom 元素时,除非我设置超时,否则它不会返回数组。 子渲染/嵌入似乎发生得不够快。 那么有没有办法在不使用超时然后调用查找子元素的情况下解决这个问题呢?
var app = angular.module('plunker', [])
.run(function($templateCache){
$templateCache.put('innerPane.html', "<div class='inner-pane' ng-transclude></div>");
$templateCache.put('slidePaneSelector.html', "<div class='slide-pane'><inner-pane><h2>First Inner Pane</h2></inner-pane><inner-pane><h2>Second Inner Pane</h2></inner-pane></div>");
})
.directive('innerPane', function(){
return {
restrict: 'EA',
transclude: true,
replace: true,
templateUrl: 'innerPane.html',
scope:{},
link: function(scope,element,attr){
}
}
})
.directive('slidePaneSelector', ['$timeout',function($timeout){
return {
restrict: 'EA',
transclude: true,
replace: true,
templateUrl: 'slidePaneSelector.html',
scope:{},
link: function(scope,element,attr){
var firstPaneElement = angular.element(element.find('div')[0]);
var secondPaneElement = angular.element(element.find('div')[1]);
console.log(element.find('div'));
$timeout(function(){
console.log(element.find('div'));
},100);
}
}
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.22/angular.min.js"></script>
<!DOCTYPE html>
<html ng-app="plunker">
<head>
<meta charset="utf-8" />
<title>AngularJS Plunker</title>
<script>document.write('<base href="' + document.location + '" />');</script>
<link rel="stylesheet" href="style.css" />
<script data-require="angular.js@1.2.x" src="https://code.angularjs.org/1.2.28/angular.js" data-semver="1.2.28"></script>
<script src="app.js"></script>
</head>
<body ng-controller="MainCtrl">
<p>Hello {{name}}!</p>
<slide-pane-selector></slide-pane-selector>
</body>
</html>
普伦克:http://plnkr.co/edit/sS5cSMboSV2mjlRxsgO8?p=preview
您可以使用不带时间组件的$timeout
- 它将等待$digest周期结束并执行。
我认为,正确的方法是让子指令"注册"到父指令。这是通过require: "^parent"
和在父控制器上公开一些register
方法来完成的。
.directive("parent", function(){
return {
controller: function($scope, $element){
this.registerChild = function(childElement){
// do whatever you need here
}
}
}
}
.directive("child", function(){
return {
require: "^parent",
link: function(scope, element, attrs, parentCtrl){
parentCtrl.registerChild(element);
}
}
}
相关文章:
- Wacom stu-430签名捕获速度太慢
- 如何在速度模板中获取LiferayPortlet实例id
- 我想放慢html中进程栏的速度
- Knockout绑定大量数据的速度较慢
- Wordpress:未捕获引用错误:未定义速度
- 即使光标位于屏幕边缘,也可以跟踪鼠标速度
- Css优化谷歌页面速度洞察
- fullcalendar在删除导致浏览器挂起的多个事件时速度较慢
- 录制速度javascript
- Javascript图像数组预加载速度和从内存中删除
- 谷歌地图多边形减慢浏览器速度
- nodejs/ccurlhttp请求与postlerrest客户端相比速度较慢
- 从Three.js场景中删除许多对象的速度较慢
- 构建多个图表时,HighCharts加载数据的速度较慢
- jQuery.length()速度含义
- Javascript滑块是't装载速度不够快
- angularjs 子指令 DOM 加载速度不够快
- animate() 更新速度不够快
- 打开选择之前的事件.(单击工作速度不够快)
- Ipad 3和Iphone 4s的速度不够快