Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS控制器功能最佳实践_Javascript_Angularjs - Fatal编程技术网

Javascript AngularJS控制器功能最佳实践

Javascript AngularJS控制器功能最佳实践,javascript,angularjs,Javascript,Angularjs,如果我想从模板中引用角度控制器函数,我应该将该函数放入$scope,如下所示: [template] <button ng-click="doSomething()"></button> [controller] $scope.doSomething = function(){}; [模板] [控制器] $scope.doSomething=function(){}; 但是其他函数(以及我不需要关注的控制器变量)呢,这些我在模板中不会引用的函数呢 我应该把它们都放在

如果我想从模板中引用角度控制器函数,我应该将该函数放入
$scope
,如下所示:

[template]
<button ng-click="doSomething()"></button>

[controller]
$scope.doSomething = function(){};
[模板]
[控制器]
$scope.doSomething=function(){};
但是其他函数(以及我不需要关注的控制器变量)呢,这些我在模板中不会引用的函数呢

我应该把它们都放在“$scope”里吗? 这对性能不是很坏吗?
$scope
之外声明这样的函数有什么困难吗?

您可以简单地将它们定义为控制器函数中的私有函数

请注意,我也喜欢函数声明语法,而不是将函数表达式赋给变量,因为它允许您在底部声明所有函数,从而在尝试查看发生了什么时减少认知负载

app.controller('MainCtrl', function ($scope) {
  $scope.exposedFn = exposedFn;

  function exposedFn() {
      fnNotExposed();
  }

  function fnNotExposed() {}

});

你不应该把它们放在范围之内。只需在控制器内部定义它们,如常规函数和变量。@MadhurAhuja,如
this.myFunction=..
var myFunction=..
?我更喜欢
function myFunction(){..
var myFunction=…
的问题在于只能在声明后调用它。
this.myFunction
将是作用域的一部分。@charlietfl的意思是:-签出;)