У меня возникла проблема с использованием значения в 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-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. почему он не работает.