当前位置: 首页 > 知识库问答 >
问题:

何时应该在Angular中使用$scope.apply()?[副本]

巫欣荣
2023-03-14
setTimeout(function(){
  $scope.person = someperson;
}, 500);

有人在指令中被监视。

$scope.watch('person', function(){
  console.log($scope.person);
  $scope.apply();
});

在这种情况下,只有在apply存在时才触发watch。

共有1个答案

孟晋
2023-03-14

$scope.apply()将触发AngularJS的$digest循环。简单地说,这只是一种触发应用程序重新程序的便捷方式。

通常,当您希望运行angular应用程序之外的一段代码时,会使用它。

直接来自文档:

angular.module('customApp', []).directive('datepicker', function () {
    return {
        require: 'ngModel',
         link: function (scope, element, attrs, ngModelCtrl) {
            jQuery(element).datepicker({
                onSelect: function (date) {
                    scope.myDate = date;
                    scope.$apply();
                }
            });
        }
    };
});
 类似资料:
  • 我对运算符和只是链接有点困惑。下面的两个例子在功能上是等同的吗?管道功能的目的或优势是什么?

  • 关于什么时候使用Docker而不是VM的,有什么指导方针吗?(反之亦然) 在我看来,像NGINX、Apache或Redis这样的服务应该是docker,但我不确定是否应该在HPC环境中使用ElasticSearch docker。 Docker总是比VM好吗?

  • 问题内容: 我已经看到许多有关使用方法的堆栈溢出问题的答案。我还看到用户在他们的评论下说“ apply很慢,应该避免”。 我已经阅读了许多有关性能的文章,这些文章解释得很慢。我还在文档中看到了关于免除apply传递UDF的便捷功能的免责声明(现在似乎找不到)。因此,普遍的共识是,应尽可能避免。但是,这引起了以下问题: 如果apply太糟糕了,那为什么在API中呢? 我应该如何以及何时使代码免费?

  • 问题内容: 我有一个利用SignalR与桌面应用程序通信的应用程序。要使用SignalR,我需要在.ts文件中使用jQuery。但是,从Angular 7迁移到Angular 8后,它似乎不起作用。 我像以前的Angular版本一样使用。不幸的是,$现在向控制台输出空白。 那么,Angular v8不再支持这种方式使用jQuery,还是在迁移过程中出现其他问题? 更新: 我有通过npm加载的jQu

  • 据我所知,当我执行时,Java编译器会在内部用替换表达式。然而,我们的Java老师告诉我们,总是显式地使用是一个很好的实践。。。 我的假设正确吗?我只需要在串联内部循环时显式使用StringBuilder,如堆栈溢出问题的答案“String builder vs String concatenation”中所示?在其他情况下,是否应该明确使用而不是或?

  • 问题内容: 什么时候应该使用以及何时?我在angular文档中找不到任何有关它们的信息,这非常令人困惑。 如果有人可以用简单的语言解释这一点,我将很高兴。每种选择的好处是什么?它们之间的真正区别是什么? 这是我发现的: 在编译函数内部,您可以借助transclude链接函数来操作DOM,也可以使用任何HTML标记上的ngTransclude指令将已嵌入的DOM插入模板中。 和 这将包含整个元素,并