我已经看到关于这个ng-init问题的堆栈溢出的一些exmaples,虽然我似乎找不到使用控制器引用它的一个。
我通过在html文件中包含以下内容来调用控制器中的函数
<div class="tab-container" ng-controller = "ExampleController" ng-init = "init()" >
在控制器中:
$scope.init = function(){
alert("do something");
};
它确实运行,但它在组件加载到屏幕上之前运行。
我错过了什么吗?
谢谢
ng-init
应该像这样工作,因为它用于初始化数据。
一个非常简单的例子:
<ul ng-init="list = [1,2,3,4]">
<li ng-repeat="l in list"></li>
</ul>
如果你想跑 某物 当你的控制器加载时,它实际上比你想象的要简单得多:
app.controller('mainCtrl', function ($scope) {
var init = function ($scope) {
// do whatever you need to do to initialize your controller
$scope.someData = ["Hey", "I'm", "Alive"]
$scope.otherData = localStorage.getItem('myBackup')
}
init()
})
或者甚至更简单,如果你不需要这个功能(没有封闭或其他)
app.controller('mainCtrl', function ($scope) {
// do whatever you need to do to initialize your controller
$scope.someData = ["Hey", "I'm", "Alive"]
$scope.otherData = localStorage.getItem('myBackup')
})
编辑 - 假设你正在使用 ngView
:
要在页面完全加载时运行代码,您应该在事件上设置观察程序 $viewContentLoaded
, 喜欢这个:
$scope.$on('$viewContentLoaded', function(){
//Here your view content is fully loaded !!
});
app.controller('mainCtrl', function ($scope) {
// This event is triggered when the view has finished loading
$scope.$on('$viewContentLoaded', function() {
$scope.someData = ["Hey", "I'm", "Alive"]
$scope.otherData = localStorage.getItem('myBackup')
})
})