Sono nuovo in AngularJS e ho a che fare con un problema durante l'implementazione di jQuery custom content scroller nella mia applicazione.Come chiamare una funzione JQuery da AngularJS quando viene modificata una vista
Ho bisogno dello scroller per aggiornare, quando aggiorno il contenuto con Angular, per questo lo scroller ha un metodo update
. Il mio problema è che non so dove chiamarlo. Il markup per il contenuto è il seguente:
<div class="scroll-list nice-scrollbars">
<ul class="gallery clearfix">
<li class="extra-alt" ng-repeat="item in relatedItems.data">
...
</li>
</ul>
</div>
Stavo cercando di chiamare il metodo di aggiornamento nel ramo successo di $http.post
di Angolare:
$scope.relatedItems = $http.post($scope.url, {
'filterType': 'related', 'film': id
}).success(function() {
$(".nice-scrollbars").mCustomScrollbar('update');
});
questo non ha funzionato, penso che sia perché quando il viene chiamato il metodo di successo, il contenuto della vista non è ancora stato aggiornato (potrei vederlo usando una funzione alert
, i dati sono comparsi dopo aver chiuso la finestra di dialogo)
L'unico modo in cui sono riuscito a far funzionare le barre di scorrimento era usare lo scroller ADVAN immobili CED per osservare i cambiamenti nel contenuto (queste sono le opzioni passate alla barra di scorrimento):
var scrollbarOpts = {
scrollButtons:{
enable:true
},
advanced:{
updateOnContentResize: true
//@TODO: get rid of this, correctly find where to call update method
}
}
Questa è cattiva pratica, come questa opzione riduce le prestazioni di tutta la sceneggiatura. Mi piacerebbe sapere dove è il posto giusto per chiamare i metodi jQuery necessari per aggiornare DOM come necessario, o in che modo tale associazione consente di visualizzare correttamente le modifiche in AngularJS?
Grazie. Il primo esempio era abbastanza, anche se con una piccola modifica - in qualche modo il selettore jQuery non funzionava, ma ho usato la 'element' var dalla direttiva, e funziona. Saluti! –
Ho provato questo e non riuscivo a farlo funzionare. Ho dovuto usare un timer. – Ztyx
questo non funziona anche per me: / – electricfeel1979