AngularJS применяет директиву после загрузки данных и делает это для каждого тега выбора - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть директива, которая должна применяться к каждому тегу 'select', но поскольку она анализирует выбранные данные, она должна быть сделана после загруженных данных.

Следующий код, который я написалработать только с последним выбранным элементом:

    myApp.directive('optionsClass', function ($parse) {
    return {
        require: 'select',
        link: function ($scope, elem, attrs, ngSelect) {

            $scope.updateLang = function () {
                 // Here i perform data parsing
            }
         }
     };
   });

контроллер:

myApp.controller('myCtrl', function ($scope, $http) {
        $scope.loadData = function () {
            $http({
                url: 'x',
                method: 'POST',
                data: { data: $scope.data}
            }).then(function(response) {
                  $scope.updateLang();
             }
        });

}

1 Ответ

0 голосов
/ 26 февраля 2019

Вы можете сделать следующее -

function loadData(){
  $scope.loading = true; // additional variable to keep track if data is loading or not
  someService.getData()
  .then(function(success){
     // populate success.data in your model property
  })
  .finally(function(){ $scope.loading = false; // loading is complete)
}

И в своем шаблоне вы можете обернуть все это в div с помощью ng-if-

<div ng-if="!loading">
  // your code here
</here>

в этомКстати, в то время как loading истинно, внутренний html выше div не будет скомпилирован.И когда loading ложно, тогда вы наверняка загрузите ваши данные, и тогда ваш внутренний HTML-код будет скомпилирован.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...