Non penso che sia possibile attivare direttamente il metodo reload(), poiché fa parte del controller che è visibile solo all'interno delle direttive.
Si potrebbe o ...
A) grilletto una ricarica direttamente in muratura attraverso l'elemento, jQuery stile
(vedi http://jsfiddle.net/riemersebastian/rUS9n/10/):
$scope.doReloadRelatively = function(e) {
var $parent = $(e.currentTarget).parent().parent();
$parent.masonry();
}
$scope.doReloadViaID = function() {
$('#container').masonry();
}
B) o estendi le direttive tu stesso, cioè aggiungi gli orologi necessari su mattoni in muratura e chiama il metodo reload() all'interno (dipende da quale caso d'uso hai).
.directive('masonryBrick', function masonryBrickDirective() {
return {
restrict: 'AC',
require: '^masonry',
scope: true,
link: {
pre: function preLink(scope, element, attrs, ctrl) {
var id = scope.$id, index;
ctrl.appendBrick(element, id);
element.on('$destroy', function() {
console.log("masonryBrick > destroy")
ctrl.removeBrick(id, element);
});
scope.$watch(function() {
return element.height();
},
function (newValue, oldValue) {
if (newValue != oldValue) {
console.log("ctrl.scheduleMasonryOnce('layout');");
ctrl.scheduleMasonryOnce('layout');
}
}
);
...
Nel blocco di codice di cui sopra, ho semplicemente aggiunto un orologio sull'elemento con la classe 'in muratura di mattoni' al fine di innescare un ricaricamento della muratura ogni volta che cambia l'altezza degli elementi.
Ho creato un jsFiddle per testare la muratura angolare di passy, sentitevi liberi di verificarlo!
http://jsfiddle.net/riemersebastian/rUS9n/10/
EDIT:
appena trovato un post simile su StackOverflow che potrebbe essere un'altra soluzione a questo problema:
AngularJS Masonry for Dynamically changing heights
Anche se non è documentato che funziona. Grazie per il puntatore. Non ho dovuto mettere il timeout $ per farlo funzionare così hai ragione (che ha qualcosa a che fare con la tua configurazione specifica). – cristiano2lopes