Mam zbudować dyrektywę dla stronicowania, która pobiera dwa argumenty; bieżąca strona i łączna liczba stron.Załaduj dyrektywę po wywołaniu AJAX
<pagination page="page" number-of-pages="numberOfPages"></pagination>
Problem jest, że będę tylko znać wartość numberOfPages po wywołania AJAX (poprzez NG-zasobu). Ale moja dyrektywa jest już renderowana przed wykonaniem połączenia AJAX.
app.controller('MyController', function ($scope, $routeParams) {
$scope.page = +$routeParams.page || 1,
$scope.numberOfPages = 23; // This will work just fine
MyResource.query({
"page": $scope.page,
"per_page": 100
}, function (response) {
//This won't work since the directive is already rendered
$scope.numberOfPages = response.meta.number_of_pages;
});
});
Wolę poczekać z renderowaniem mojego szablonu kontrolerów do czasu zakończenia wywołania AJAX.
Plan B polegałby na dołączeniu szablonu do szablonu dyrektyw po zakończeniu wywołania AJAX.
Utknąłem opracowując oba scenariusze.
Dzięki. Nie wiedziałem o łączu (zamiast kontrolera). Myślę, że mogę ukryć dyrektywę za pomocą ng-hide i pokazać ją, gdy wartość się zmieni. Ale czy nie można zapobiec renderowaniu, dopóki wszystko nie zostanie zakończone? –
Również; Mam działającą funkcję zegarka. Ale jak mogę ponownie renderować dyrektywę po wykryciu nowej zmiany? –
Renderowanie nastąpi, gdy dane będą gotowe dopiero przed – Dalorzo