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/

  • 相关阅读:
    P3919 【模板】可持久化线段树 1(可持久化数组)
    P3384 【模板】轻重链剖分
    P2680_运输计划
    CSP-S2 T4/P7078 贪吃蛇_set 70pts/100pts(O2)
    SPFA判负环
    P6394 樱花,还有你
    CSP-S2T4/P7078 贪吃蛇
    【模板】单源最短路径(标准版)
    U135649 皇室战争
    【离散数学】实验三 偏序关系中盖住关系的求取及格论中有补格的判定
  • 原文地址:https://www.cnblogs.com/Answer1215/p/4314774.html
Copyright © 2011-2022 走看看