Подтвердить что ты не робот

Как вызвать $scope. $Apply(), используя синтаксис "controller as"

Я пытаюсь максимально ограничить использование $scope в моих контроллерах и заменить его синтаксисом Controller as.

Моя текущая проблема заключается в том, что я не уверен, как вызвать $scope.$apply() в моем контроллере, не используя $scope.

Изменить: я использую TypeScript 1.4 в сочетании с angular

У меня есть эта функция

setWordLists() {
  this.fetchInProgress = true;
  var campaignId = this.campaignFactory.currentId();
  var videoId = this.videoFactory.currentId();

  if (!campaignId || !videoId) {
    return;
  }

  this.wordsToTrackFactory.doGetWordsToTrackModel(campaignId, videoId)
  .then((response) => {
    this.fetchInProgress = false;
    this.wordList = (response) ? response.data.WordList : [];
    this.notUsedWordList = (response) ? response.data.NotUsedWords : [];
  });
}

вызывается из

$scope.$on("video-switch",() => {
           this.setWordLists();
});

И это (массивы wordList и notUsedWordList) на мой взгляд, не обновляется:

<div class="wordListWellWrapper row" ng-repeat="words in wordTrack.wordList">
  <div class="col-md-5 wordListWell form-control" ng-class="(words.IsPositive)? 'posWordWell': 'negWordWell' ">
    <strong class="wordListWord">{{words.Word}}</strong>
    <div class="wordListIcon">
      <div class="whiteFaceIcon" ng-class="(words.IsPositive)? 'happyWhiteIcon': 'sadWhiteIcon' "></div>
    </div>
  </div>
  <div class="col-md-2">
    <span aria-hidden="true" class="glyphicon-remove glyphicon" ng-click="wordTrack.removeWord(words.Word)"></span>
  </div>
</div>

В тех же строках $apply существует ли другой способ вызова $scope.$on с помощью Controller as?

Спасибо!

4b9b3361

Ответ 1

Чтобы ответить на данный вопрос, вы можете использовать методы $scope() в контроллере при использовании синтаксиса controller-as, если вы передаете $scope в качестве параметра функции. Однако одним из основных преимуществ использования синтаксиса controller-as не является использование $scope, что создает затруднительное положение.

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