当前位置: 首页 > 面试题库 >

如何使用“ controller as”语法调用$ scope。$ apply()

慕凌
2023-03-14
问题内容

我试图限制我$scope在控制器中的使用,并用Controller as语法替换它。

我当前的问题是我不确定如何$scope.$apply()在不使用的情况下调用控制器$scope

编辑:我使用TypeScript 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();
});

在我看来,(数组wordListnotUsedWordList)没有更新:

<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(),只要$scope将参数作为参数传递给函数,就可以在使用controller-
as语法时在控制器中使用方法。但是,使用controller-as语法的主要好处之一是没有使用$scope,这会产生一个难题。

正如评论中所讨论的那样,发布者将提出一个新问题,以首先审查所需的特定代码$scope,并在可能的情况下提出一些重组建议。



 类似资料:
  • 问题内容: 例如,请参见此处:http : //www.johnpapa.net/angularjss-controller-as-and-the-vm- variable/ 就像标题所暗示的那样,我将按照本教程 [http://tech.pro/tutorial/1473/getting-started-with- angularjs-unit-testing] 进行单元测试,事实证明一切都很好

  • 问题内容: 我不知道如何使用和。官方文档没有帮助。 我不明白的是: 他们连接到DOM吗? 如何更新对模型的DOM更改? 它们之间的连接点是什么? 我尝试了本教程,但这需要对它的理解并且理所当然。 做什么和做什么,以及如何正确使用它们? 问题答案: 您需要了解AngularJS的工作原理才能理解它。 消化周期和作用域 首先,AngularJS定义了所谓的 摘要循环 的概念。这个周期可以看作是一个循环

  • 问题内容: 我正在使用controllerAs语法来避免控制器中的$ scope汤,并且还使用ui.bootstrap来呈现模式视图。 我需要打开一个与当前控制器共享相同作用域的modalInstace。注入示波器时,您可能会执行以下操作: 但是,由于我没有注入作用域,而是使用controllerAs语法,因此无法正常工作。 根据我的发现,您将需要使用resolve来传递数据,但是必须通过函数显式

  • 有两个表 表 user id name 1 tom 2 jerry 表 friend id user_id support_id 1 1 1 2 1 2 表 support id name can_fly 1 bird 1 2 dog 0 三个 Model 我想实现如下 sql,意义为 获取 tom 所有会飞的朋友 关系 我这样写,但后边的不会写了,求解。

  • “scope”元素在3.3节中定义: scope = scope-token *( SP scope-token ) scope-token = 1*NQCHAR

  • 本文向大家介绍vue template中slot-scope/scope的使用方法,包括了vue template中slot-scope/scope的使用方法的使用技巧和注意事项,需要的朋友参考一下 在vue 2.5.0+ 中slot-scope替代了 scope template 的使用情形为,我们已经封装好一个组建,预留了插槽,使用 的插槽 首先 我们的创建一个组建 组建很简单有一个 slot