gpt4 book ai didi

javascript - Angularjs 和关系数据库

转载 作者:行者123 更新时间:2023-11-29 10:52:04 25 4
gpt4 key购买 nike

我一直在开发一个将显示论坛主题的网络应用程序。不,我的问题是我无法在每个主题回复中显示用户名。

这是我的 MER

enter image description here

现在重要的部分是 Angular 色(用户)通过 id_persona 与回复(回复)相关。

我正在尝试获取用户信息,例如( Angular 色数据库中的姓名、姓氏),因此我使用了一些解决方案。

这是我的 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 获得的主题(主题)的一部分。

ng-repeat 正在获取与此主题相关的每个回复

现在,解决方案 1 是 <span>{{ getPersona(respuesta[3]) }}</span>在我的 Controller 中,我有一个函数可以获取 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,但我不明白它是如何工作的,我这样做了:

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 提供了两种方式绑定(bind)。这使得像您这样的情况变得复杂。

归结为您在开发模式下的情况。对于 angularjs 中的双向绑定(bind)变量,它会变化 10 次以确保变量保留相同的值。这就是观察者所暗示的。它确保如果某些内容不会过于频繁地更改,否则由于双向数据绑定(bind),它将进入无限循环更新 View 和 js 对象。似乎出于某种原因它认为您的用户值可以改变(不确定为什么)可能是对 Angular 色的获取请求可以给出随机的不同值。

我建议您使用第二种方法。同样,出于同样的原因,它可能会在控制台中打印两次,但如果您在 View 中使用它,它应该可以正常工作。

一般来说,我也使用 angularjs,我认为你应该在更新 View 之前首先将对象获取到 js

关于javascript - Angularjs 和关系数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43550087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com