Javascript 对AngularJS中数据绑定的质疑

Javascript 对AngularJS中数据绑定的质疑,javascript,angularjs,Javascript,Angularjs,我正在学习AngularJS,用它做我的第一个应用程序。到目前为止,一切正常,我很兴奋:) 但现在我有了一个console.log,它让我完全困惑,我开始觉得我完全错过了什么 我有一个绑定到控制器的简单标记: <h2 ng-controller='HeaderController' ng-show='data.actualSection > 0'> {{titleForSection()}} </h2> $scope.sectionTitle = 'I S

我正在学习AngularJS,用它做我的第一个应用程序。到目前为止,一切正常,我很兴奋:)

但现在我有了一个console.log,它让我完全困惑,我开始觉得我完全错过了什么

我有一个绑定到控制器的简单标记:

<h2 ng-controller='HeaderController' ng-show='data.actualSection > 0'>
    {{titleForSection()}}
</h2>
$scope.sectionTitle = 'I SHOULD RETURN YOU SOMETHING';
//and update it dynamically
$scope.funcToUpdateTitle = function(newTitle){
    $scope.sectionTitle = newTitle;
};
真正让我困惑的是,我注意到每当模型中发生变化时,函数都会被触发。
控制器如何在没有$watch的情况下持续执行函数?

angular中的数据绑定是通过摘要循环完成的,这意味着angular循环会反复检查更改,如果函数绑定到函数,则必须评估更改

这就是为什么将UI绑定到函数结果通常是个坏主意的原因。 相反,您应该这样做:

标记:

<h2 ng-controller='HeaderController' ng-show='data.actualSection > 0'>
    {{sectionTitle}}
</h2>

angular中的数据绑定是通过摘要循环完成的,这意味着angular循环会反复检查更改,对于绑定到函数的函数,必须求值以查找更改

这就是为什么将UI绑定到函数结果通常是个坏主意的原因。 相反,您应该这样做:

标记:

<h2 ng-controller='HeaderController' ng-show='data.actualSection > 0'>
    {{sectionTitle}}
</h2>

实际上,在angularJS中,当以这种方式调用摘要循环时,与视图相关的所有函数都将被调用,因为您在HTML中调用了
titleForSection()
,所以当HTML中发生事件时,会导致执行该函数


希望有帮助

实际上,在angularJS中,当以这种方式调用摘要循环时,所有与视图相关的函数都将被调用,因为您已经在HTML中调用了
titleForSection()
,所以当HTML中发生事件时,会导致执行该函数


希望有帮助

模板中的
titleForSection()
的用途是什么?一般来说,应该将函数调用绑定到按钮等,但不要将它们直接放在模板中。@Sebastian原因是标签将是动态的,控制器应该为itI提供正确的标签。我想他说的是不要将函数绑定到模板。调用控制器中的函数,并将输出分配给模板中要使用的作用域中的变量。Angular通过脏检查作用域来工作,因此它会一次又一次地调用你的函数…@Sebastian你应该将它作为答案发布,因为我的错误方法是函数一次又一次重复的原因。感谢you@aet你应该把它作为答案贴出来,因为我的错误方法是函数一次又一次重复的原因。谢谢您模板中的
titleForSection()
的用途是什么?一般来说,应该将函数调用绑定到按钮等,但不要将它们直接放在模板中。@Sebastian原因是标签将是动态的,控制器应该为itI提供正确的标签。我想他说的是不要将函数绑定到模板。调用控制器中的函数,并将输出分配给模板中要使用的作用域中的变量。Angular通过脏检查作用域来工作,因此它会一次又一次地调用你的函数…@Sebastian你应该将它作为答案发布,因为我的错误方法是函数一次又一次重复的原因。感谢you@aet你应该把它作为答案贴出来,因为我的错误方法是函数一次又一次重复的原因。非常感谢。