gpt4 book ai didi

javascript - AngularJS Controller 中的函数

转载 作者:IT王子 更新时间:2023-10-29 03:02:32 29 4
gpt4 key购买 nike

我有一个代码片段,其中有一个 Angular 模块化 Controller ,但在同一个 Controller 中有一个函数并带有一个调用,这让我怀疑 Javascript 或 Angular 是否允许这种编码方式?如果是,那么它是如何读取的?请参阅下面的代码格式:

obj.controller('CartController',function($scope){

$scope.totalCart = function(){
var total = 10;
return total;
}
function calculate(){
...Some Logic..
}

$scope.$watch($scope.totalCart, calculate);
)};

请帮助我理解 Angular/Javascript 是否允许在 Controller 中定义和调用这种类型的函数?

最佳答案

calculate() 是一个私有(private)函数——它只能在 CartController 的范围内访问。如果您不需要在 View 中使用您的函数,最好将其设为私有(private)。它说它打算在 View 中使用,因此如果其他人将使用此代码,在 View 中使用它之前应该三思。此外:从 calculate 中,您可以访问 CartController 范围内可访问的所有对象(包括作为参数传递给 CartController 的对象) .

以这种方式声明的函数是一个合适的 JS 函数,这意味着您可以通过它的名字来引用它。有时,如果您提前声明/创建您的函数,然后才将它们分配给某个其他对象的属性(在本例中为 $scope),人们认为它更具可读性:

function someFn (...) { ... }

function someOtherFn (...) { ... }

...

$scope.someFn = someFn

在上面的代码片段中,意图非常明确:使 someFn 可访问,同时保持 someOtherFn 私有(private)。

顺便说一句。像这样声明函数:function nameFn(...){...} 被称为函数语句;您可以非常类似地这样做:var nameFn = function(...) {...}(所谓的函数表达式)。它们之间略有不同——基本上是非法的:

 someFn();
var someFn = function(...) {...}

然而,这有效:

 someFn();
function someFn(...) {...}

有时你被迫使用这种模式,例如在我的 answer对此question .

关于javascript - AngularJS Controller 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20654059/

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