zoukankan      html  css  js  c++  java
  • [AngularJS + cryptoJS + Gravatar] Provider vs factory

    Configurable Bits Need a Provider

    We want to be able to configure the characterLength before Tweetableruns. Refactor the Tweetable factory into a provider and expose asetLength() function that will allow us to set a characterLength in our app config.

    angular.module('NoteWrangler')
    .factory('Tweetable', ['$http', function TweetableFactory($http) {
      var characterLength = 144;
    
      return function(potentialTweet) {
        return $http({
          method: 'POST',
          url: 'http://gentle-spire-1153.herokuapp.com/tweet',
          data: {
            description: potentialTweet,
            maxLength: characterLength
          }
        });
      };
    }]);

    Change the factory definition into a provider definition.

    .provider('Tweetable', ['$http', function TweetableProvider($http) {

    Wrap the existing function returned by our TweetableProvider() function in a call to the $get() function required by providers. Don't forget to move the $http service injection!

    angular.module('NoteWrangler')
    .provider('Tweetable', [function TweetableProvider() {
      var characterLength = 144;
      this.$get = function($http){
        return function(potentialTweet) {
          return $http({
            method: 'POST',
            url: 'http://gentle-spire-1153.herokuapp.com/tweet',
            data: {
              description: potentialTweet,
              maxLength: characterLength
            }
          });
        };
      };
    }]);

    Create a setLength() function attached to the provider that sets thecharacterLength variable.

    angular.module('NoteWrangler')
    .provider('Tweetable', [function TweetableProvider() {
      var characterLength = 144;
      this.$get = function($http){
        return function(potentialTweet) {
          return $http({
            method: 'POST',
            url: 'http://gentle-spire-1153.herokuapp.com/tweet',
            data: {
              description: potentialTweet,
              maxLength: characterLength
            }
          });
        };
      };
      
      this.setLength = function(length){
          characterLength = length;
      };
    }]);

    Configuring the Tweet Length

    Now that our provider is ready to go, let's call the setLength() method ofTweetableProvider to configure the acceptable maximum tweet length. Instead of 144 characters, we need to allow for a characterLength of 40.

    Let's call config() on our NoteWrangler module and provide it an anonymous function.

    Inject TweetableProvider into the config() function.

    Call the setLength() function of TweetableProvider from within the config()function and pass it a value of 40.

    angular.module('NoteWrangler', ['ngRoute'])
    .config(function(TweetableProvider){
        TweetableProvider.setLength(40);
    });

    Link: https://code.google.com/p/crypto-js/

  • 相关阅读:
    竞赛200
    竞赛202
    判断是node还是 浏览器端 typeof xxx==='string'
    闷油瓶
    关于算法题
    堆 heap, 准备博客参考
    私有npm 上发布 包
    竞赛199
    正则,转换数组
    设计模式之模板设计模式-以spring的各种template为例
  • 原文地址:https://www.cnblogs.com/Answer1215/p/4314774.html
Copyright © 2011-2022 走看看