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/

  • 相关阅读:
    Codeforces 938G(cdq分治+可撤销并查集+线性基)
    codeforces 938F(dp+高维前缀和)
    寒武纪camp Day6
    寒武纪camp Day5
    寒武纪camp Day4
    bzoj4161 (k^2logn求线性递推式)
    loj10003加工生产调度
    loj10002喷水装置
    loj10001种树
    bzoj1023
  • 原文地址:https://www.cnblogs.com/Answer1215/p/4314774.html
Copyright © 2011-2022 走看看