尝试在解决方案中访问服务:
angular
.module('app', ['ui.router', 'templates'])
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('home', {
url: '/',
templateUrl: 'app/views/home.html',
controller: 'Home as home',
resolve: {
productIndex: function (ProductService) {
debugger;
// return ProductService.getProductsIndex();
}
}
});
$urlRouterProvider.otherwise('/');
});
当运行上面的代码时,调试器永远不会命中,控制台中什么都没有出现。当ProductService作为参数被删除时,调试器会命中,但很明显,无法调用该服务。如果可能的话,我也希望只从服务中进行http调用。
我一直在寻找一段时间,只看到类似注射的工作示例。即使回顾过去的(工作)项目,我也看不出与上面所做的有什么不同。我的猜测是,其他地方可能出现问题。任何帮助都会很棒!
为了完整起见:
function ProductService($http) {
this.getProductsIndex = function() {
// debugger;
// return $http.get('/products');
};
}
angular
.module('app')
.controller('ProductService', ProductService);
答案 0 :(得分:1)
现在您的服务正在注册为控制器。你应该把它注册为服务。 e.g。
angular
.module('app')
.service('ProductService', ProductService);
答案 1 :(得分:0)
var app = angular.module(' *****')
app.service('ProductService', function() {
return {
getData: function($q, $http) {
var defer = $q.defer();
$http.get('****').success(function(data) {
defer.resolve(data);
});
return defer.promise;
}
};
});
abou结算
resolve接受服务的字符串或返回要注入的值的函数
resolve: {
productIndex: function (ProductService) {
// your stuff goes here.
}
}
这会让人工作...... :)