2015-08-18 59 views
0

我在使用ng-repeat中的值並將該值傳遞給服務(http)promise並更新表格行時遇到問題服務的迴應。在ng-repeat中從動態值分配角度模板中的作用域值

我的代碼是這樣的

模板:

<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對於表中的所有行都是相同的。

我的問題是,如何爲動態表格行設置一個範圍值,並且沒有相同的範圍名稱和結果,它們都獲取最後一個值?

任何幫助將不勝感激。

感謝

回答

0

更改您的NG-init進程是:在其上通過在NG-重複一切共享的主要$範圍

<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。這就是爲什麼它不起作用。

+0

嗨馬修,感謝您的答覆。當我這樣做時,{{current_course}}是空白的。也許與服務承諾有關? –