2016-01-12 66 views
0

我正在使用Restangular和angularJS。從狀態解析和從控制器調用Restangular的區別

以下是我的控制器代碼。 我無法在控制檯上打印教師輸出,我無法使用vm.teacherList進行遊戲。

案例1:

angular.module("subjectManagement").controller('subjectTeacherAllocationCtrl', 
     function ($scope, $state, $location, Restangular) { 
      var vm = this; 
      vm.teacherList = Restangular.all("teacher").getList().$object; 
      console.log(" vm.teacherList ---> " + vm.teacherList); 
    }); 

console output is only `vm.teacherList --->` 

當我檢查網絡XHR,我能夠與數據的老師迴應像

[{teacherId: "3", empId: "9", teacherDateOfJoining: "2015-11-02", teacherJoiningGrade: "TGT",…},…] 
0: {teacherId: "3", empId: "9", teacherDateOfJoining: "2015-11-02", teacherJoiningGrade: "TGT",…} 
1: {teacherId: "4", empId: "10", teacherDateOfJoining: "2015-11-02", teacherJoiningGrade: "TGT",…} 

案例2: 如果我把相同的代碼行狀態解決而不是控制器。我可以在控制檯上打印vm.teacherList,我可以用vm.teacherList做任何事情。

.state('subjectTeacherAllocation', { 
         url: '/subject/subjectTeacherAllocation', 
         templateUrl: 'app/subject/edit/subjectTeacherAllocation.html', 
         controller: 'subjectTeacherAllocationCtrl as vm', 
         resolve: { 

          teacher: function (Restangular, $stateParams) { 
           return Restangular.all('teacher').getList(); 
          } 
         } 
        }) 

    angular.module("subjectManagement").controller('subjectTeacherAllocationCtrl', 
    function ($scope, $state, $location, teacher, Restangular) { 
     var vm = this; 
     $scope.teacher = {} 
     vm.teacherList = teacher.plain(); 

     console.log(" vm.teacherList ---> " + vm.teacherList); 

}); 




console output is only vm.teacherList ---> vm.teacherList ---> [object Object],[object Object],[object Object],[object Object],[object Object] 

我想了解的是什麼的情況下,2

+0

我你的消息後檢查,但如果你仍然有問題,寫電流的答案是正確的... –

+0

@PoyrazYilmaz:感謝您抽空看看。 – fresher

回答

1
這兩個(情況1 &情況2) ,我如何才能實現,如果1打印vm.teacherList,同樣的方式之間的區別

案例1

根據文檔,getList。$ object返回對請求完成時數據將填充的空對象的引用。所以如果你試圖立即打印數據,你只會看到那個空的對象。當您在開發人員控制檯中檢查網絡對象時,您會看到完成的請求,這就是您查看數據的原因。

案例2

既然你是決心塊,狀態不會改變,直到所有的請求都完成了。所以你的來自Restangular的電話必須在下一步之前完成。當您的控制器加載時,教師是一個完全填充的對象,您可以按預期使用數據。

製作案例1樣病例2

使用由Restangular.all()的GetList併成功返回的承諾工作填充數據。

vm.teacherList = {}; 
Restangular.all('teacher').getList().then(function success(data) { 
    vm.teacherList = data; 
    console.log(vm.teacherList); 
}); 
相關問題