我有一个时间试图找出为什么我得到了角度的未知提供者错误.我已经检查了所有其他问题,我可以找到这个主题,最建议在依赖注入错误.但是,对我来说似乎并不像我忘记注入任何东西.我一直在试图让解决方案的属性像
this post by Misko一样工作.我可以在解决之后控制台登出员工数据,但是我收到了未知的提供者错误,从而阻止了数据在页面上显示.
这是我的路由器
"use strict"; var app = angular.module('app',[ 'employeeServices' ]); app.config(appRouter); function appRouter ($routeProvider) { $routeProvider .when('/employees/:account_id',{ controller: 'EmployeeCtrl',templateUrl: 'view/employee/view.html',resolve: employeeCtrl.resolve }) .otherwise({ redirectTo: '/' }); }
这是我的控制器
var employeeCtrl = app.controller('EmployeeCtrl',[ '$scope','employees',function ($scope,employees) { $scope.employee = employees; console.log($scope.employee); } ]); employeeCtrl.resolve = { employees: function (Employee,$q,$route) { var deferred = $q.defer(); console.log("current params: ",$route.current.params.account_id); Employee.getOne({ id: $route.current.params.account_id },function (successData) { deferred.resolve(successData); },function (errorData) { deferred.reject(errorData); }); return deferred.promise; } };
和我的工厂:
angular.module('employeeServices',['ngResource']) .factory('Employee',['$resource',function ($resource) { return $resource('/employees/:id/json',{ id: '@account_id' },{ 'save': { method: 'POST',isArray: false },'update': { method: 'PUT',params: { id: '@account_id' } },'remove': { method: 'DELETE','getOne': { method: 'GET',params: { id: '@account_id' },'query': { method: 'GET',isArray: true } } ); }]);
任何建议将非常感谢!
所以问题是我在我的部分视图中通过ng控制器设置了EmployeeCtrl控制器,就像这样:
<div class="viewPage" ng-controller="EmployeeCtrl">
但是,使用解析时,必须通过路由器完成控制器的设置,以使其在运行时可用.我删除了ng-controller =“EmployeeCtrl …
<div class="viewPage">
…和presto,就像没有发生任何事情一样.
我必须注意到,我从the AngularJS IRC channel接受了那种耐心的人的帮助