Область не применяется к переменным области

0

У меня есть этот фрагмент кода в моем контроллере:

$scope.$on('$ionicView.enter', function() {
$scope.nodeId = $stateParams.studynodeRef;
  Studies.fetchCollection($scope.nodeId).then(function(data){
      $scope.y = angular.fromJson(data.list);
      $scope.collections = angular.fromJson($scope.y[0].collections);
      console.log($scope.collections);
})
});

Причина, по которой у меня $ scope. $ On, заключается в том, что я хочу, чтобы nodeId обновлялся каждый раз, когда я вводил представление, чтобы он мог обновлять коллекции. Теперь, прежде чем у меня была функция $ scope. $ On, и у меня была только функция Study.fetchCollection, я смог выполнить итерацию через коллекции в моем шаблоне следующим образом:

 <ion-list ng-controller="StudyCtrl">
      <ion-item ng-repeat="collection in collections" nav-clear menu-close ng-click="go('app.studies')" class="item item-icon-left brand-base-text-color">
          <i class="icon ion-ios-paper"></i>
            {{collection.name}}
        </ion-item>

Но теперь он ничего не показывает. Даже если я просто попытаюсь отобразить {{коллекции}}, он ничего не показывает. Консоль возвращает $ scope.collections как список объектов, но я не думаю, что применяется область $ scope, поэтому {{collections}} пуст, и я не уверен, как использовать $ scope. $ Apply() в этот контекст. Я был бы очень признателен, если бы кто-нибудь мог сказать мне, как исправить это

  • 0
    Но вы уже пытались использовать $ scope. $ Apply ()? $ scope. $ apply (function () {$ scope.collections = angular.fromJson ($ scope.y [0] .collections);});
  • 0
    Я попробовал то же самое, теперь я получаю $ digest уже в процессе ошибки
Теги:
angularjs-scope
ionic

1 ответ

0

Одним из способов преодоления этого является создание функции и вызов внутри контроллера, и поскольку контроллер подключен к представлению, он будет обновляться каждый раз, когда вы входите в представление. Что-то вроде этого

$scope.onLoad = function() {
    $scope.nodeId = $stateParams.studynodeRef;
    Studies.fetchCollection($scope.nodeId).then(function(data){
        $scope.y = angular.fromJson(data.list);
        $scope.collections = angular.fromJson($scope.y[0].collections);
        console.log($scope.collections);
    })
}
$scope.onLoad();
  • 0
    Правильно, но посмотрите, что я хочу, чтобы контроллер или хорошо загружал fetchCollection каждый раз, когда я получаю доступ к тому же представлению. Я понимаю, что контроллер для представления загружается только один раз, если вы не обновите страницу. Именно поэтому я использовал $ scope. $ On ('$ ionicView.enter', function ()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню