2017-04-21 116 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