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/

  • 相关阅读:
    java配置文件读取
    简易表单验证
    Enter键提交表单
    background-attachment:fixed应用
    随机生成密钥
    javascript/jquery判断是否为undefined或是null!
    jQuery获取和设置disabled属性、背景图片路径
    $(function(){})里面不能声明定义函数
    CSS浏览器兼容性----Hack
    数组快速排序
  • 原文地址:https://www.cnblogs.com/Answer1215/p/4314774.html
Copyright © 2011-2022 走看看