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}}
被填充。您不需要触发任何东西就可以让控制器运行其代码。