簡體   English   中英

AngularJS和關系數據庫

[英]Angularjs and relational databases

我一直在使用一個Webapp,它將顯示論壇主題。 沒問題,我無法在每個主題回復中都顯示用戶名。

這是我的MER

在此處輸入圖片說明

現在,其中的重要部分是角色(用戶)與通過id_persona的響應(回復)相關。

我正在嘗試獲取用戶信息,例如(角色數據庫中的名稱,姓氏),所以我使用了一些解決方案。

這是我的HTML

<h2>{{titulo}}</h2>
<p>{{texto}}</p>
<div class="row">
    <div class="container" ng-repeat="respuesta in respuestas">
        <!-- solution 1 -->
        <span>{{ getPersona(respuesta[3]) }}</span>
        <!-- solution 2 -->
        <div ng-init="searchUser(respuesta[3])">
            <span ng-repeat="user in users" ng-if="respuesta[3] == user[0]">{{user[0]}}</span>
        </div>
        <p>{{respuesta[1]}}</p>
    </div>
</div>

Titulo和texto是我通過$ routeParams獲得的tema(主題)的一部分。

ng-repeat正在獲取與此主題相關的每個答復

現在,解決方案1是<span>{{ getPersona(respuesta[3]) }}</span> ,其中在我的控制器中,我有一個獲取respuesta [3](即id_persona)的函數。

$scope.getPersona = function(persona) {

        var url3 =  'http:/WEBSERVICE/persona?filter=id,eq,' + persona;

         $http.get(url3).then( function(response) {
            //console.log(response);
            var user = response.data.persona.records[0];
            console.log(user)
            return user;
         });

    }

這應該返回一個包含用戶信息的數組,但是出現錯誤

10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations: []

net::ERR_INSUFFICIENT_RESOURCES

第二個解決方案是<div ng-init="searchUser(respuesta[3])"> ,它也將respuesta [3]發送給函數searchUser。 此解決方案是創建一個數組(用戶),該數組具有在主題上答復的用戶的信息,然后使用nf-if過濾器,其中respuesta [3] =user.id。

$scope.users = []
    $scope.searchUser =  function(persona) {

        var url3 =  'https://WEBSERVICE/persona?filter=id,eq,' + persona;

         $http.get(url3).then( function(response) {
        var user = {
            id: response.data.persona.records[0][0],
            nombres: response.data.persona.records[0][3],
            apellidos: response.data.persona.records[0][4] + ' ' + response.data.persona.records[0][5]
        };
        //console.log(user)
        if ($scope.users.indexOf(user) == -1) {             
            $scope.users.push(user);
            console.log($scope.users.indexOf(user));
            console.log($scope.users)
        } 



     })

}

這是什么問題? $scope.users.indexOf(user)在數組Users中重復,為什么我使用$scope.users.indexOf(user)

我認為解決方案1應該是工作更快的解決方案,但是它不起作用,解決方案2可以工作,但是我正在獲得重復的用戶,也嘗試這樣做,但是我不知道它是如何工作的,我做到了:

for (var i = 0; i < $scope.users.length; i++) {
                if($scope.users[i].id === users.id) {
                    console.log('ya existe');
                } else {
                    $scope.users.push(user);

                }
                console.log($scope.users)
            }

謝謝你的幫助!

這是由於angularJs提供的雙向綁定而發生的。 這樣會使您的情況復雜化。

在開發模式下進行案例分析。 對於angularjs中的雙向綁定變量,它會變10次以確保該變量保留相同的值。 這就是觀察者的意思。 它可以確保如果由於兩種方式的數據綁定而使某些事情發生的變化不是太頻繁,它將進入無限循環更新視圖和js對象。 似乎出於某種原因,它認為您的用戶值可以更改(不確定原因),這可能是對角色角色的獲取請求可以提供隨機的不同值。

我建議您使用第二種方法。 同樣,出於相同的原因,它可能會在控制台中打印兩次,但是如果在視圖中使用它,它應該可以正常工作。

一般來說,我也可以與angularjs一起使用,我認為您應該在更新視圖之前將對象獲取到js 1st

暫無
暫無

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

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