AngularJS中$ scope.myScope = function()和function()之间的区别是什么

时间:2015-02-16 14:33:03

标签: javascript angularjs scope

我最近与AngularJS合作开发。让我感到困惑的是这两者之间的差异:

$scope.myScope = function () { 
 var x = 'do something with variable here';
 $scope.anotherScope = x;
};

function myFunction () {
 var x = 'do something with variable here';
 $scope.anotherScope = x;
}

他们似乎都能做同样的事情(我在控制器内部使用了很多)。是否有使用这两者的时间和地点的最佳做法?

3 个答案:

答案 0 :(得分:2)

$scope.myScope = function () {}; 

这意味着您的函数是范围对象的属性。因此,即使在您的应用中,您也可以在控制器,html页面中使用它。它可以在同一个应用程序的不同模块中引用。因此,您只需在onclick或onchange中直接使用函数名称在html页面中调用它,无论如何,根据您的需要。

另一个定义只能在您的控制器中使用,而不是您应用的范围。但是如果你使用" this.myScope = function(){};"来定义你的函数。然后你可以使用你的控制器调用html中的函数。例如ng-click =" controllerName.myScope();"

主要区别在于函数所属的范围以及所有可以引用函数的位置。

希望它有所帮助!!!!

答案 1 :(得分:0)

如已提及的mourycy,您应该使用

形式
$scope.myScopeFunction = function () { 
    ...
};

仅适用于要通过范围对象调用的函数。这是视图中函数调用所必需的。

例如:

<button ng-click="myScopeFunction()" />

调用当前$scope对象的函数myScopeFunction。

如果您不需要从“外部”调用控制器方法,则应使用以下格式:

function myFunction() { 
    ...
};

答案 2 :(得分:0)

$scope.myScop = function(){
...
};

是一个可以从HTML控制器执行的函数。

function foo(){
...
} 

是一个只能在控制器的JS文件上执行的函数。