Назначение значения области в угловом шаблоне из динамического значения в ng-repeat

0

У меня возникла проблема с использованием значения в ng-repeat и передачей этого значения на обещание службы (http), а затем обновление строки таблицы с ответом от службы.

Мой код похож на этот

шаблон:

<table class="table table-hover">
                    <thead>
                    <tr>
                        <th>Course Name</th>
                        <th>Current Section</th>
                    </tr>
                    </thead>
                    <tbody>
                    <tr ng-repeat="course in courses" ng-init="set_current_section(course.course_id)">
                        <td>{{course.course_name}}</td>
                        <td>{{current_course}}</td>
                     </tr>
                    </tbody>
                </table>

Затем мой контроллер

$scope.set_current_section = function(course_id) {
    staff_service.get_start_section(course_id).then(function(result){

        $scope.current_course = result;
    })
}

и услуги

this.get_start_section = function(course_id) {

    var deferred = $q.defer();

    $http.get('http://' + remoteServer + '/api/course_get_start_section/' + $sessionStorage.user_id + '/' + course_id)
        .success(function(response){ deferred.resolve(response); })
        .error(function(){ console.log('error getting start section'); })

    return deferred.promise;

}; // close create_new_section

Я могу console.log вернуть значение из службы, и это правильно. Но значение области current_section одинаково для всех строк в таблице.

Мой вопрос заключается в том, как установить значение области для динамической строки таблицы и не иметь одинаковое имя области и привести к тому, что все они получают последнее значение?

Любая помощь будет принята с благодарностью.

благодаря

Теги:
ng-repeat

1 ответ

0

Измените свой ng-init так:

<tr ng-repeat="course in courses">
    <td>{{course.course_name}}</td>
    <td ng-init="current_course = set_current_section(course.course_id)">{{current_course}}</td>
</tr>

Вы устанавливаете current_course в основной $ scope, который используется всем в ng-repeat. почему он не работает.

  • 0
    Привет Мэтью, спасибо за ответ. Когда я это сделаю, {{current_course}} будет пустым. Может быть, что-то делать с сервисным обещанием?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню