簡體   English   中英

如何基於AngularJS中的id數組返回值

[英]How to return values based on an id array in AngularJS

這個問題真的很難復制,因為它看起來幾乎是隨機的,但這是我要嘗試做的一個基本示例,我認為我沒有在AngularJS中做到最好,這就是我遇到問題的原因。

index.html

<!doctype html>
<html ng-app="test">
<head>
<meta charset="utf-8">
<title>Testing</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.13/angular-route.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.13/angular-animate.js"></script>
<script src="app.js"></script>

</head>

<body ng-controller="main">

    <pre>numPeopleInProfession('Graphics') {{numPeopleInProfession('Graphics') | json}}</pre>
    <pre>numPeopleInProfession('Psychology') {{numPeopleInProfession('Psychology') | json}}</pre>

</body>
</html>

app.js

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

app.controller('main', function($scope){

    $scope.people = [
        {
            'name':'Jordan',
            'profession':'Graphics'
        },
        {
            'name':'Amber',
            'profession': 'Psychology'
        },
        {
            'name':'Megan',
            'profession': 'Graphics'
        }
    ]

    $scope.numPeopleInProfession = function(profession) {
        var numPeople = 0;
        for(var i=0; i<$scope.people.length; i++) {
            if($scope.people[i].profession == profession) {
                numPeople+=1;
            }
        }
        console.debug(numPeople);
        return numPeople;
    };

});

如您所見,我要輸出的數據不是一個簡單的變量,而是一個需要動態計算的變量(在實際環境中,JSON數據是從Firebase后端提取的)。

console.debug()會記錄每個專業的正確人數,但是當我硬刷新頁面時,有時會顯示正確的人數,有時是0。

真正很難找到問題的根源,因為當它顯示為0且顯示函數的返回值時,它似乎是隨機的。

在AngularJS中有更好的方法嗎? 我真的是Angular的新手,可能會以錯誤的方式來處理這個問題。

我覺得這與范圍/ DOM在觸發功能之前未完全更新有關。

如果您使用標准的Firebase JS API加載數據,則在同步完成后,應使用$scope.$apply(); 告訴您的應用,視圖數據已更改。

如果您使用AngularFire API,則不需要它。

我在這里創建了一個工作的Plunker,您只需要使用firebase的URL設置peopleUrl var。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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