AngularJS提供商不按照样式指南工作

时间:2016-04-21 18:45:36

标签: javascript angularjs

我正在关注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未定义。

害怕,我错过了一些非常微不足道的事情。

2 个答案:

答案 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?
    }
});