【发布时间】:2015-05-31 22:18:48
【问题描述】:
问题
我有一个简单的指令,可以对特定元素执行大小更新。这会监视窗口大小并进行相应调整。
MyApp.directive('resizeTest', ['$window', function($window) {
return {
restrict: 'AC',
link: function(scope, element) {
var w = angular.element($window);
scope.$watch(function() {
return { 'h': w.height(), 'w': w.width() };
}, function(newValue, oldValue) {
// resizing happens here
}, true);
w.bind('resize', function() { scope.$apply(); });
}
};
}]);
这很好用。
恰好在与之关联的div 标记内,我有一个孩子div。当父元素调整大小时,我想对子元素进行定位更改。但是,我无法触发触发器。
这在启动时被调用,但在调整元素大小或窗口更改时不会被触发:
MyApp.directive('centerVertical', ['$window', function($window) {
return {
restrict: 'AC',
link: function(scope, element) {
element.css({border: '1px solid #0000FF'});
scope.$watch('data.overlaytype', function() {
$window.setTimeout(function() {
console.log('I am: ' + element.width() + 'x' + element.height());
console.log('Parent is: ' + element.parent().width() + 'x' + element.parent().height());
}, 1);
});
}
};
}]);
我应该使用什么类型的绑定或监视配置来检查父元素的大小调整?
小提琴
【问题讨论】:
-
你有这方面的 plnkr/fiddle 吗?
-
我会尝试设置一个。我还没有为 AngularJS 做过一个,所以这将是一次很好的体验。
-
小提琴已添加。我注意到如果我注释掉第二个指令,第一个指令会再次起作用。
标签: javascript angularjs angular-directive