gpt4 book ai didi

angularjs - Angular 指令正在加载多次

转载 作者:行者123 更新时间:2023-12-02 15:25:30 24 4
gpt4 key购买 nike

这是 Angular 中的错误还是我遗漏了什么:

从指令的模板调用一个函数表明该函数被执行了 11 次!使用 templateurl 和 22 次 !!带有字符串模板。

angular.module('testDirective', [])
.directive('myDirective', function() {
return {
scope:{},
template: '{{increment()}} {{count}}',
controller: function($scope) {

$scope.count = 0;

$scope.increment = function() {
$scope.count += 1;
};
}
};
})

HTML:

<body ng-app="testDirective">
<my-directive></my-directive>
</body>

结果:

22

Here is a Plunker使用 template 和 templateUrl 方法。

例如,当方法调用涉及到转发器时,这是一个相当大的问题,这最终导致调用相同方法的时间大大超过应有的时间。

任何人都可以阐明这一点吗?

最佳答案

{{increment()}} 在您的 View 中将在每次调用摘要循环时被调用,就像任何绑定(bind)表达式一样。如果您在 Controller 函数本身而不是从 View 模板调用的绑定(bind)函数中递增,则表明指令正在“加载”多次。但是 Angular 的本质是,任何绑定(bind)的表达式都会在摘要周期中反复检查变化,任何你期望只发生一次(甚至可预测的次数)的事情都不应该在绑定(bind)到内容的表达式中发生元素。另一方面,绑定(bind)到事件处理程序的表达式仅在事件触发时执行。

该模型需要一些时间来适应。虽然旧文档反对它,但您可以在内容绑定(bind)表达式中使用函数,但它们永远不应该改变状态。您无法真正控制何时调用 $digest(),如果您是 thinking in the Angular way ,你不会想要的。

关于angularjs - Angular 指令正在加载多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30622983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com