gpt4 book ai didi

angularjs - Angular : ng-init does not run on load

转载 作者:行者123 更新时间:2023-12-02 09:13:23 25 4
gpt4 key购买 nike

我在堆栈溢出上看到了一些关于这个 ng-init 问题的例子,尽管我似乎找不到使用 Controller 引用它的例子。

我通过在 html 文件中添加以下内容来调用 Controller 中的函数

<div class="tab-container" ng-controller = "ExampleController" ng-init = "init()" >

在 Controller 中:

$scope.init = function(){

alert("do something");
};

它确实运行,但它在组件加载到屏幕上之前运行。

我错过了什么吗?

谢谢

最佳答案

ng-init 应该像这样工作,因为它用于初始化数据。

一个非常简单的例子:

<ul ng-init="list = [1,2,3,4]">
<li ng-repeat="l in list"></li>
</ul>

如果您尝试在 Controller 加载时运行某些内容,它实际上比您想象的要简单得多:

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')

})
})

关于angularjs - Angular : ng-init does not run on load,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24694908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com