2015-01-14 3 views
1

Привет У меня есть 2 таблицы в MySQL, я назвать данные с PHP (Mysqli), так что я положил эти данные в JavaScript вар с $scope.student= <?php echo json_encode($student) ?>; и $scope.ratings= <?php echo json_encode($ratings) ?>; 2 таблицы имеют идентификатор ключа (ID_studen)Angularjs нг-повторить фильтр ID

В первой таблице есть только личные данные, а второй имеет Datails, так что мне нужно фильтровать и показать все детали рейтингами здесь код:

<div ng-app="" ng-controller="Ctrl"> 
    <ul ng-repeat="student in students"> 
    <li ng-repeat="rating in ratings (where student.tagid =ratings.tagid"> {{rating.note}}</li> 

    </ul> 
</div> 

проверка jsfiddle.net

ответ

2

Вы можете использовать $ фильтр смотрите демо ниже

app = angular.module("app", []); 
 

 
app.controller("Ctrl", Ctrl); 
 

 
function Ctrl($scope) { 
 

 
    $scope.students = [{ 
 
    firstname: 'Buster', 
 
    lastname: 'Bluth', 
 
    tagid: '4134' 
 
    }, { 
 
    firstname: 'John', 
 
    lastname: 'McClane', 
 
    tagid: '9845' 
 
    }, { 
 
    firstname: 'Mister', 
 
    lastname: 'Spock', 
 
    tagid: '0905' 
 
    }]; 
 

 
    $scope.ratings = [{ 
 
    matter: 'Mathematics', 
 
    note: '12', 
 
    tagid: '4134' 
 
    }, { 
 
    matter: 'Biology', 
 
    note: '13', 
 
    tagid: '9845' 
 
    }, { 
 
    matter: 'Lenguage:', 
 
    note: '14', 
 
    tagid: '0905' 
 
    }]; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="app" ng-controller="Ctrl"> 
 
    <ul ng-repeat="student in students"> 
 
    <li ng-repeat="rating in ratings | filter : {tagid: student.tagid}">{{student.firstname}} {{student.lastname}} | {{rating.matter}} {{rating.tagid}}</li> 
 
    </ul> 
 
</div>

0
<div ng-app="" ng-controller="Ctrl"> 
    <ul ng-repeat="student in students"> 
     <li ng-repeat="rating in ratings | { tagid = student.tagid }">{{rating.note}}</li> 
    </ul> 
</div> 
0

Вот фактический способ сделать инлайн фильтрацию свойства:

<li ng-repeat="rating in ratings | filter: {'tagid': student.tagid}"> {{rating.note}}</li> 

Однако заметим, что более для предварительной фильтрации вашего списка результатов, поэтому в вашем контроллере вы ставите

$scope.filteredRatings = $scope.ratings.filter(function(r) { 
    return r.tagid === $scope.student.tagid; 
}); 

Так что ваш HTML будет только:

<li ng-repeat="rating in filteredRatings"> {{rating.note}}</li> 

Наконец, я не очень комфортно с PHP, но это звучит как странным образом, чтобы заполнить вашу модель. Вы должны сделать это в фактическом файле javascript, а не в своем HTML.

+0

Я использую php только для загрузки данных из БД, что плохо? – Jearca

Смежные вопросы