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/

  • 相关阅读:
    网络协议(一)HTTP请求报文(请求行、请求头、请求体),响应报文
    Java集合(五) Set 添加元素
    Java 泛型面试题
    并发编程-线程池(二)线程池回收线程
    Java(二)equal 和 hashcode使用
    Java 泛型(一)作用和使用
    Java排序(一)实现类的排序
    Java排序(二)排序算法的稳定性
    SDL 程序编译错误-undefined reference to `SDL_GetError'
    SDL程序编译错误-error: conflicting types for ‘_XData32’
  • 原文地址:https://www.cnblogs.com/Answer1215/p/4314774.html
Copyright © 2011-2022 走看看