0

我已經構建了一個測試應用程序,與AngularJS的教程非常相似,主要區別在於:它是用Yeoman初始化的。

我廠的代碼如下所示:

var deClashServices = angular.module('deClashServices', ['ngResource']); 

deClashServices.factory('Session', 
    ['$resource', 
    function ($resource) { 
    return $resource('views/sessions.json'); 
    }] 
); 

是,角resource.js已被添加到index.html的。以及我的控制器和服務js文件。 是,deClashServices已被列爲在NG-應用的依賴,因爲在我的app.js這裏看到:

var declashAngularApp = angular.module('declashAngularApp', [ 
    'ngRoute', 

    'deClashServices', 
    'deClashControllers' 
]); 

declashAngularApp.config(['$routeProvider', 
    function($routeProvider) { 
    $routeProvider 
     .when('/', { 
     templateUrl: 'views/main.html', 
     controller: 'MainCtrl' 
     }) 
     .when('/sessions', { 
     templateUrl: 'views/sessions.html', 
     controller: 'SessionListCtrl' 
     }) 
     .otherwise({ 
     redirectTo: '/' 
     }); 
    }]); 

,這裏是我的控制器:

var deClashControllers = angular.module('deClashControllers', []); 

deClashControllers.controller('MainCtrl', 
    ['$scope', 'Session', 
    function ($scope, Session) { 
     $scope.sessions = Session.query(); 
     $scope.awesomeThings = [ 
      'HTML5 Boilerplate', 
      'AngularJS', 
      'Karma' 
     ]; 
    }] 
); 
main.html

,這是如預期的,在MainCtrl下,{{awesomeThings}}產生3個串的數組。 但是{{sessions}}產生一個空數組。

查明,這是.query()這不是加載它,我用一個工廠,一個簡單的JSON文件的嘗試:{"sessions":"number1"}

deClashServices.factory('Session', 
    ['$resource', 
    function ($resource) { 
    return $resource('views/simple.json'); 
    }] 
); 

我的控制器是這樣的:

deClashControllers.controller('MainCtrl', 
    ['$scope', 'Session', 
    function ($scope, Session) { 
     $scope.sessions = {}; 
     Session.get(function(response) { 
      $scope.sessions = response.sessions; 
     }); 
     $scope.awesomeThings = [ 
      'HTML5 Boilerplate', 
      'AngularJS', 
      'Karma' 
     ]; 
    }] 
); 

此代碼有效。切換回JSON數組並嘗試使用.query.$promise.then(callback-function)進行回調不起作用。

我現在很迷茫和困惑,因爲來自AngularJS的教程代碼幾乎完全相同的結構。

我懷疑我使用.query()的方式有問題,但同時Angular Tutorial也使用相同的方法,並且在那裏沒有問題。

以防萬一,這可能是我已經展示了一些代碼片段外,在這裏爲整個項目的代碼: github

回答

0

角的資源的服務回報犯規承諾。它返回一個空對象,以便當請求從服務器資源服務返回時,可以使用提取的數據填充該對象,因爲它具有對該對象的引用。

所以,如果你想在返回的數據作出反應,你必須使用一個回調函數或者更好的 使用$ HTTP的服務,因爲它返回的承諾。

看看這個plkr

我也建議你看看Restangular