我最近与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;
}
他们似乎都能做同样的事情(我在控制器内部使用了很多)。是否有使用这两者的时间和地点的最佳做法?
答案 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文件上执行的函数。