我已經構建了一個測試應用程序,與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