2014-10-16 35 views
0

为什么下面的代码不起作用?我想要$ scope.init()函数在启动时运行。在控制器初始化上运行代码的正确方法是什么?AngularJS:控制器初始化时运行代码

app.controller('LoginCtrl', function($scope) { 
    $scope.init(); 

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

}); 
+2

尝试在函数后面放置'init()'? – 2014-10-16 14:22:00

+0

'$ scope.init()'在你调用它的地方不存在。在设置它之后调用它,即第一个'$ scope.init = function ...'和* then *'$ scope.init()'。你甚至可能不需要将'init()'放在范围内,以内联运行它就足够了。 – 2014-10-16 14:23:10

+0

已经试过了,没有什么区别 – user2611144 2014-10-16 14:23:29

回答

2

您尝试在定义之前调用init()。如果你打开它,它的工作原理,你可以在这个小提琴看到:

http://jsfiddle.net/gjcotq1y/2/

var myApp = angular.module('myApp',[]); 

myApp.controller('MyCtrl', function($scope){ 
    $scope.init = function() { 
     alert('Message'); 
    }; 
    $scope.init(); 
    $scope.message = 'Test message'; 
}); 
0

你也可以定义初始化控制器为你做:

app.controller('LoginCtrl', function($scope) { 
    $scope.init = function() { 
     ... 
    }; 
}); 

然后从调用它标记:

<body ng-init='init()'> 
... 
</body> 
相关问题