[英]Angularjs ngInit repeats 3 times - ngClick once
我知道還有很多其他問題涉及這個主題,但是沒有一個問題能真正回答我的問題。 我有一個從數據庫中檢索數據的函數。 現在,當我在ngInit
上運行該函數時,該函數運行了3次,但是在ngClick
它僅運行了一次,這就是我想要的。
我在幾篇文章中讀到,多次重復執行該功能是正常的,因為要angular watchers
代碼更改的angular watchers
。 現在我真的不介意代碼在重復,但是問題是我在函數啟動時將變量設置為true
,而在獲取數據時將變量設置為false
。 但是現在我的變量設置為false
,代碼再次運行。 因此,我的變量過早更改。
例:
controller.getItem = function(){
controller.loading = true;
service.getSelectedItem($routeParams._id).then(function(response){
if(response.data.state === 'success'){
controller.myItem = response.data.item;
controller.loading = false;
}
});
}
HTML:
<div id="item">
<!-- remove this comment to test ngInit -->
<!-- <div id="item" ng-init="controller.getItem()"> -->
<button id="clickMe" ng-click="controller.getItem()">Get data</button>
<div class="panel panel-new">
<div class="panel-header">
<div class="row">
<div class="col-xs-12">
<h4>My Item - {{ controller.myItem._id }}
<small>added on: {{ controller.myItem.dateAdded | date: 'dd MMM yyyy' }}</small></h4>
</div>
</div> <!-- Close div for .row -->
</div> <!-- Close div for .panel-header -->
</div>
</div>
現在,我的加載屏幕消失了,我的內容仍然undefined
。 只有運行了三遍之后,內容才真正被填充。
就像我說的那樣,當此功能在ngClick
上運行時,它可以完美運行並且只能運行一次,但是在ngInit
它可以運行3次,並且無法按預期運行。
我不確定如何解決此問題。
您能再請點細節嗎? 最好在特定控制器內使用nginit。 調用特定控制器后,它將根據行為完美運行。
好的,經過大量調試,我終於找到了問題。 問題是我在索引頁面中有這個:
<div ng-if="auth" id="ngView" class="ngView">
<div ng-view>
</div>
</div>
所以我認為正在發生的事情是它創建了一個視圖,運行了該函數,創建了一個視圖,然后運行了該函數。 這就是為什么一切都發生不止一次的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.