Problem
Ich habe eine einfache Direktive, die Sizing-Updates für ein bestimmtes Element ausführt. Dies überwacht die Fenstergröße und nimmt entsprechende Anpassungen vor.AngularJS-Richtlinie watch übergeordnete Größenänderung
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(); });
}
};
}]);
Das funktioniert gut.
Es passiert einfach, dass innerhalb der div
Tag, der zugeordnet ist, habe ich ein Kind div
. Wenn die Größe des übergeordneten Elements geändert wird, möchte ich am untergeordneten Element Positionierungsänderungen vornehmen. Allerdings kann ich den Auslöser nicht auslösen.
Dies wird beim Start aufgerufen, aber nicht ausgelöst werden, wenn das Element oder die Fenster Änderungen der Größe geändert wird:
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);
});
}
};
}]);
Welche Art von Bindung oder schaut Konfiguration soll ich zum Ändern der Größe der Eltern zu überprüfen, verwenden Element?
Fiddle
https://jsfiddle.net/rcy63v7t/1/
Haben Sie irgendwelche PLNKR/Geige dafür? –
Ich werde versuchen, eins einzurichten. Ich habe noch keinen von denen für AngularJS gemacht, also wird es eine gute Erfahrung sein. –
Fiddle hinzugefügt. Ich habe bemerkt, dass, wenn ich die zweite Direktive auskommentiere, die erste wieder funktioniert. –