Sto utilizzando Angular & Bootstrap, con il controllo della scheda di navigazione per cambiare la visibilità delle div. In un div, ho una grande img (disegno CAD dell'edificio). Inoltre, sovrapposto i marcatori sull'immagine. Voglio ridimensionare la posizione x/y dei marcatori in base alla larghezza dell'immagine & immagine naturalWidth. Sto usando una direttiva di ridimensionamento per rilevare le modifiche e aggiornare il mio ambito.Come attivare l'evento di ridimensionamento in AngularJS
Il mio problema è che se l'utente cambia scheda e passa di nuovo a div con CAD img, l'aggiornamento non avviene finché non ridimensiono il browser (o sorprendentemente se premo il tasto CMD su Mac).
C'è un modo angolare per attivare l'evento di ridimensionamento per forzare il ricalcolo dei miei indicatori. O c'è un evento che posso attingere che viene attivato quando viene visualizzato completamente?
O c'è un approccio angolare più raffinato che dovrei prendere?
Questo è l'HTML, la direttiva di ridimensionamento che ho scritto è sul tag.
<div id="imageDiv" style="position: relative;" ng-show="selectedLocation" >
<img ng-src="../maps/image/{{selectedLocation}}"
style=" max-width: 100%; max-height: auto; border:solid 1px black" resize imageonload />
</div>
E questa è la direttiva di ridimensionamento (adattato da http://jsfiddle.net/jaredwilli/SfJ8c/)
directive('resize', function($window) {
return function(scope, element) {
var w = angular.element($window);
scope.imgCadImage = element;
scope.getWindowDimensions = function() {
return {
'h' : scope.imgCadImage[0].width,
'w' : scope.imgCadImage[0].height
};
};
scope.$watch(scope.getWindowDimensions, function(newValue, oldValue) {
if (scope.imgCadImage[0].naturalWidth)
scope.imgScale = newValue.w/scope.imgCadImage[0].naturalWidth;
else
scope.imgScale = 1;
console.log("watched resize event - scale = "+scope.imgScale)
scope.updateCADMarkersAfterResize();
}, true);
w.bind('resize', function() {
console.log("'resize' - scale = "+scope.imgScale)
scope.$apply();
});
};
}).
Hai provato l'aggiunta di un attributo basato direttiva comportamentale per il div che contiene il immagine che chiama il ridimensionamento nella sua funzione 'link'? –
@MarcKline - qual è la funzione di collegamento div? Puoi indicarmi qualche altra informazione a riguardo. La ricerca su Google non è di grande aiuto. – Kevin
Permettetemi innanzitutto di chiedervi questo: la vostra direttiva resize a) è allegata all'immagine o al suo contenitore eb) è vincolata/attivata solo dall'evento 'window.resize'? Sarebbe molto utile se potessi fornire qualche pseudocodice che mostri quello che hai descritto, ma se puoi rispondere a queste domande potrei essere in grado di indovinare una soluzione. –