2017-04-21 115 views
0

我一直在使用一個web應用程序,這將顯示論壇的主題。沒有我的問題,我不能在每個主題回覆上顯示用戶名。Angularjs和關係數據庫

這裏是我的MER

enter image description here

現在的這個重要的部分是角色(用戶)通過id_persona與respuestas(回信)有關。

我想獲取用戶信息,如(姓名,姓在個人數據庫中),所以我使用了一些解決方案。

這裏我的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是我的TEMA(主題),我用$ routeParams得到的一部分。

NG-重複越來越它與這個話題

現在相關的所有答覆,解決方案1是<span>{{ getPersona(respuesta[3]) }}</span>凡在我CONTROLER我有得到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)

我認爲解決方案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) 
      } 

感謝您的幫助!

回答

1

這是因爲使用angularJs提供的雙向綁定。這會讓你的情況更加複雜化。

在開發模式下展開您的案例。 對於angularjs中的雙向綁定變量,它將變量10次以確保變量保留相同的值。這就是觀察者所暗示的。它確保如果由於雙向數據綁定導致某些內容不會變得太頻繁,它將進入無限循環更新視圖和js對象。似乎由於某種原因,它認爲你的用戶價值可以改變(不知道爲什麼)可能是人物角色的獲取請求可以隨機給出不同的值。

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

一般來說,也使用angularjs我認爲你應該在更新視圖之前獲得對象js 1st