Я разрабатываю форум, использующий AngularJS и взаимодействующий с MySQL с WS API. Моя идея - когда пользователь отвечает, я должен получить ответ и его/ее имя.Карта двух json-массивов с использованием фильтров
Это мой DB MER
Как вы можете видеть,
- Один Tema (тема) может иметь много respuesta (ответы) ,
- Один персон (пользователей) могут иметь много respuesta (ответов), а также много Tema (тема).
Теперь в контроллере форума, я получаю с $http
два ответов:
url2
-> получить ответы на тему фильтрации с идентификатором (от$routeParams
) = id_tema (на db)url3
-> получить пользователей в целом и должен быть отфильтрован в файле forum.html, чтобы получить имя пользователя, который реплицирует тему.
Форум-controller.js
angular.module('rhoAppApp')
.controller('temaCtrl', function ($routeParams, $scope, $http) {
var id = $routeParams.id;
var url = 'http://server/api.php/tema?filter=id,eq,' + id;
$http.get(url).then(function (response) {
$scope.titulo = response.data.tema.records[0][1];
$scope.texto = response.data.tema.records[0][2];
})
var url2 = 'http://server/api.php/respuesta?filter=id_tema,eq,' + id;
$http.get(url2).then(function (response) {
$scope.respuestas = response.data.respuesta.records;
})
var url3 = 'http://server/api.php/persona'
$http.get(url3).then(function (response) {
$scope.personas = response.data.persona.records;
})
});
Теперь я triying на карту url2
с url3
с помощью фильтров.
persona[0]
(идентификатор пользователя) должен быть равен respuesta[3]
, чтобы два получить имя пользователя persona[3]
.
Так я последовал следующий вопрос Map two Collections (Inner Join) и я сделал что-то подобное в HTML:
<table class="table">
<tbody>
<tr><th>{{titulo}}</a></th></tr>
<tr><td>{{texto}}</td></tr>
<tr ng-repeat="respuesta in respuestas | orderBy : 'respuesta[0]'" id="{{respuesta[0]}} " ><td>
Por <span ng-repeat="persona in personas | filter:{persona[0]:respuesta[3]}"> {{persona[3]}} </span>, el {{respuesta[2] | badDateToISO | date:'shortDate'}} a las {{respuesta[2] | badDateToISO | date: "HH:mm"}} Hrs.
<br>
<br>
{{respuesta[1]}}
</td></tr>
<tr><td>
<form >
<textarea class="form-control" rows="5" required></textarea>
<br>
<button type="button" class="width-35 center-block btn btn-sm btn-primary" ng-click="urlbtn()">
Responder
</button>
</form>
</td></tr>
</tbody>
</table>
Моя проблема с этим выражением filter:{persona[0]:respuesta[3]}
, это, кажется, что AngularJS не принимает выражение 2 массивы на тот же фильтр. Кроме того, я использовал 'persona[0]:respuesta[3]'
, но не работал.
Я получил эту ошибку с этим filter:{persona[0]:respuesta[3]}
angular.js:14110 Error: [$parse:syntax] Syntax Error: Token '[' is unexpected, expecting [}] at column 27 of the expression [personas | filter:{persona[0]:respuesta[3]}] starting at [[0]:respuesta[3]}].
другого, я не получаю ошибки, но я не получил имя пользователя.