我正在关注John Papa's Angular1 styleguide并尝试实施提供商。
根据文档的提供者看起来像这样,
angular
.module('blocks.router')
.provider('routerHelper', routerHelperProvider);
routerHelperProvider.$inject = ['$locationProvider', '$stateProvider', '$urlRouterProvider'];
/* @ngInject */
function routerHelperProvider($locationProvider, $stateProvider, $urlRouterProvider) {
/* jshint validthis:true */
this.$get = RouterHelper;
$locationProvider.html5Mode(true);
RouterHelper.$inject = ['$state'];
/* @ngInject */
function RouterHelper($state) {
var hasOtherwise = false;
var service = {
configureStates: configureStates,
getStates: getStates
};
return service;
///////////////
function configureStates(states, otherwisePath) {
states.forEach(function(state) {
$stateProvider.state(state.state, state.config);
});
if (otherwisePath && !hasOtherwise) {
hasOtherwise = true;
$urlRouterProvider.otherwise(otherwisePath);
}
}
function getStates() { return $state.get(); }
}
}
我嘲笑了一个非常基本的版本here on plnkr
我的提供商:
angular
.module('plunker')
.provider('random', function() {
this.$get = helper;
this.getX = function() {
return 10;
}
function helper() {
var provider = {
getX: getX,
getY: getY
}
return provider;
function getX() {
return 10;
}
function getY() {
return 20;
}
}
});
因此,getX
工作正常,但getY
未定义。
害怕,我错过了一些非常微不足道的事情。
答案 0 :(得分:0)
看起来你有getX的getter而不是getY:
this.getX = function() {
return 10;
}
this.getY = function() {
return 20;
}
这是你的plunker的分叉版本: http://plnkr.co/edit/lHBj6LiirisZ4Bb6DM9M?p=preview
答案 1 :(得分:0)
您是否也应该添加getY
方法?
angular
.module('plunker')
.provider('random', function() {
this.$get = helper;
this.getX = function() {
return 10;
}
this.getY = function() {
return 10;
}
function helper() {
var provider = {
getX: getX,
getY: getY
}
return provider;
// not required after return statement, why you need them?
}
});