AngularJS—;从控制器显式返回值

AngularJS—;从控制器显式返回值,angularjs,angularjs-controller,Angularjs,Angularjs Controller,前几天我遇到了下面的代码块,我正试图弄清楚作者可能选择返回init()的确切原因而不是像这样做 $scope.init = function() {...}; 然后用ng单击,或其他方式调用它。 代码如下: myApp.controller("PlaylistCtrl", [ "$scope", "tracksService", function($scope, tracksService) { var init; init = function() { $sc

前几天我遇到了下面的代码块,我正试图弄清楚作者可能选择
返回init()的确切原因而不是像这样做

$scope.init = function() {...};
然后用
ng单击
,或其他方式调用它。 代码如下:

myApp.controller("PlaylistCtrl", [
  "$scope", "tracksService", function($scope, tracksService) {
    var init;
    init = function() {
      $scope.addTrack("Jay-Z - 99 Problems");
      return $scope.tracks = $scope.getTracks();
    };
    $scope.getTracks = function() {
      return tracksService.tracks();
    };
    $scope.addTrack = function(trackTitle) {
      if (trackTitle !== "") {
        return tracksService.addTrack(trackTitle);
      }
    };
    return init();
  }
]);

现在的问题是:从控制器返回值的目的是什么?它还利用了哪些附加功能?这是否会导致控制器启动后运行
init()
,如果不是,具体用途是什么?感谢您的帮助。谢谢。

没有具体的含义,因此删除
返回值不会改变任何内容

如果您查看其他函数,似乎开发人员有从每个函数返回的习惯,即使没有必要

这可能只是一种习惯。在某些情况下,它可以帮助开发人员确保初始化块结束,将函数声明放在下面,例如在这个小示例中:

// Initialization
var foo = 'bar';
doFoo();
doBar();

return; // <- end of declarative block

// Methods
function doFoo() { ... }
function doBar() { ... }
//初始化
var foo='bar';
doFoo();
多巴();

返回;//控制器的返回值是播放列表的控制器对象实例。因此,您可以添加属性和方法以附加到控制器的“返回值”,而不是将它们附加到继承的$scope变量。有关更多详细信息,请参阅。在这把小提琴中,似乎是
init()
导致init函数在初始化时运行(注意
{tracks}
是如何填充的,而不返回
init()
您难道不需要显式地将
init
附加到
$scope
并使用
ng click
或其他方法来获取
init()
要运行吗?我对这种语法不太熟悉(CoffeScript?),但我可以向您保证,返回
init()
或不返回都不会对角度循环产生任何影响。但是调用它当然会产生影响。
init()
由控制器执行,这意味着一旦编译(或启动)应用程序通过角度,因此
{{tracks}}
被填充。您不需要触发任何东西就可以让控制器运行其代码。