嗨我正在嘗試使用Angular的路由來解決控制器作用域的必要對象。我已閱讀了一些關於如何執行此操作的教程,但仍然收到Unknown Provider
錯誤。這個問題似乎與project
被注入ProjectDetailCtrl
。角度路由器解決了一個未知提供者錯誤的結果
app.js
var myApp = angular.module('myApp', ['ngRoute']);
myApp.config(function ($interpolateProvider, $routeProvider) {
$routeProvider
...
.when('/project/:projectId', {
templateUrl : 'partials/_project_detail.html',
controller: 'ProjectDetailCtrl',
resolve: {
project: function ($route, MyService) {
return MyService.get('projects/', $route.current.params.projectId).then(function(data) {
console.log('VERIFY DATA: ', data);
return data;
});
}
}
controllers.js
.controller('ProjectDetailCtrl', function ($scope, project) {
$scope.project = project;
}
EDIT
services.js
.factory('MyService', function ($http, $q) {
var MyService = {
...
get: function (items_url, objId) {
var defer = $q.defer();
$http({method: 'GET',
url: api_url + items_url + objId}).
success(function (data, status, headers, config) {
defer.resolve(data);
}).error(function (data, status, headers, config) {
defer.reject(status);
});
return defer.promise;
},
EDIT2
的問題是顯然不與服務的方法,因爲這也產生錯誤:
app.js
var myApp = angular.module('myApp', ['ngRoute']);
myApp.config(function ($interpolateProvider, $routeProvider) {
$routeProvider
...
.when('/project/:projectId', {
templateUrl : 'partials/_project_detail.html',
controller: 'ProjectDetailCtrl',
resolve: {
project: {title: 'foo'}
}
});
})
我可以驗證我的決心f聯合被正確地返回,但Angular仍然抱怨說project
是未知。這裏有什麼問題?我已經嘗試將我的控制器製作成模塊並將其傳遞給myApp模塊,但我仍然對project
獲得相同的Unidentified Provider
問題。
任何幫助非常讚賞。
注意:我正在使用Angular 1.2.9。
EDIT3:解決方案
所以這個問題是此行中我的模板:
<!-- WRONG: <div ng-controller="ProjectDetailCtrl">-->
<div>
<h2 ng-show="project">Project: <strong>{{ project.title }}</strong></h2>
</div>
顯然,ng-controller
指令不能與決心使用。
什麼是確切的錯誤? '''未知的提供者projectProvider'''? –
'組件$注入器中未知提供程序錯誤 –
[AngularJS,解決方案和未知提供者]的可能重複(http://stackoverflow.com/questions/14846466/angularjs-resolve-and-unknown-provider) – DDM