簡體   English   中英

Angularjs ngInit重復3次-ngClick一次

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM