Значение HTML-переменной не передается атрибутам app.controller в теге html - PullRequest
1 голос
/ 27 октября 2019

Я работаю над базовым веб-приложением ученик - учитель, в котором я создаю интерфейс, используя угловой JS. В моем файле JS есть 2 контроллера приложений, один для извлечения студентов, а другой - для поиска предметов, выделенных каждому ученику.

У меня проблема с передачей идентификатора студента в контроллер приложения в качестве атрибута {{student.id}}, так как он просто передается в виде строки "{{student.id}}", а не передает фактическое значение {{student.id}}

Фрагмент HTML-кода, в котором возникла проблемапроисходит

<div ng-controller="studentController" class="container">

    <table class="table">
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Subjects</th>
        </tr>
        <tr ng-repeat="student in students">
            <td id>{{student.id}}</td>
            <td>{{student.Name}}</td>
            <td ng-controller="subjectController"
                id = {{student.id}}>
             {{subjects}}
            </td>
        </tr>
    </table>

Проблема, с которой я столкнулся, заключается в этой строке

<td ng-controller="subjectController" id = {{student.id}}> {{subjects}}</td>

Запуск такой же строки кода, как кажется, работает, как и ожидалось, но я хочу иметь возможностьпереберите все идентификаторы учащихся в цикле for

<td ng-controller="subjectController" id = 1> {{subjects}}</td>

Есть ли у кого-нибудь какие-либо предложения о том, как мне решить эту проблему? Я много смотрел в Интернете, но не смог найти решения, так как большинство учебников и документации сосредоточены на том, чтобы воспринимать ввод пользователя через ng-модель.

Я довольно новичок в программировании, поэтому любая помощь будет высоко оценена.

ОБНОВЛЕНИЕ

app.controller('studentController', function($scope, $location, $http) {
    $http.get('http://localhost:8080/getStudents')
    .then(function(response) {
        $scope.students = response.data;
    });

});

app.controller('subjectController', function($scope, $attrs, $location, $http) {
    $http.get('http://localhost:8080/getSubjects?ID='+ $attrs.id)
            .then(function(response) {
                $scope.subjects = response.data;
            });

});

1 Ответ

1 голос
/ 27 октября 2019

subjectController должен наследовать свойства от своих родительских областей:

app.controller("subjectController", function($scope) {
    console.log($scope.student.id); 
    console.log($scope.students); //Inherited from parent scope
});

Для получения дополнительной информации см.

...