Я пытаюсь максимально ограничить мое использование $scope
в моих контроллерах и заменить его синтаксисом Controller as
.
Моя текущая проблема заключается в том, что я не уверен, как позвонить $scope.$apply()
в мой контроллер, не используя $scope
.
Edit: Я использую машинопись 1.4 в сочетании с угловым
У меня есть эта функция
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
?
Спасибо!
Вам нужно будет использовать '$ scope' (или' $ rootScope') для '$ apply' и' $ on'. – tasseKATT
до 99% всех ситуаций, вам нужно всего лишь называть '$ scope. $ Apply()', когда вы напрямую работаете с dom, не зная знаний. К сожалению, многие люди прибегают к '$ scope. $ Apply()' как «fix-all», когда что-то не работает, но обычно лучше сделать правильный код, чтобы угловой знал о происходящем. – Claies
@ Андрей, вы видите что-нибудь в моем коде, которое указывает на что-то сломанное или плохо написанное, которое могло бы решить мою проблему? –