zoukankan      html  css  js  c++  java
  • [AngularJS] Transforming raw JSON data to meaningful output in AngularJS

    angular.module('APP', [])
    
    .controller('MainController', function($scope, UserConstants){
      var user = {
        firstName: 'Benjamin',
        lastName:  'Roth'
      }; 
      this.user = user;
      this.userTypes = UserConstants.types;
    })
    .service('UserPresenter', function(UserConstants){
      var typeFromId = _.memoize(function(typeId){
        var obj = _.findWhere(UserConstants.types, { value: typeId});
        return obj ? obj.display : '';    
      });
      
      return {
        fullName: function(user){
          return user.firstName + ' ' + user.lastName;
        },
        type: function(user){
          return typeFromId(user.typeId);
        }
      };
    })
    .factory('UserModel', function(UserPresenter){
      function UserModel(props){
        _.extend(this, props);
      }
      UserModel.prototype.fullName = function(){
        return UserPresenter.fullName(this);
      };
      UserModel.prototype.type = function(){
        return UserPresenter.type(this);
      };
      return UserModel;
    })
    .filter('user', function(UserPresenter){
      return function(user, fnName){
        return UserPresenter[fnName](user);
      };
    })
    .constant('UserConstants', {
      types: [
        { value: '1', display: 'Front end' },
        { value: '2', display: 'Back end' },
        { value: '3', display: 'Full stack' }
      ]
    });
    <!DOCTYPE html>
    <html ng-app="APP">
    <head>
      <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script>
      <script src="https://cdn.rawgit.com/lodash/lodash/3.0.1/lodash.min.js">
    </script>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
      <meta charset="utf-8">
      <title>JS Bin</title>
    </head>
    <body>
        <div class="container-fluid" ng-controller="MainController as main">
          <div class="row">
            <div class="col-sm-3">
              <pre>{{ main.user | json}}</pre>
            </div>
            <hr>
            <div class="col-sm-3">
              <form>
                <div class="form-group">
                  <label>First Name</label>
                  <input ng-model="main.user.firstName" type="text">
                </div>
                <div class="form-group">
                  <label>Last Name</label>
                  <input ng-model="main.user.lastName" type="text">
                </div>
                <div class="form-group">
                  <label>Type</label>
                  <select ng-model="main.user.typeId" ng-options="type.value as type.display for type in main.userTypes"></select>
                </div>
              </form>
            </div>
            <hr>
            <div class="col-sm-3">
              <form>
                <div class="form-group">
                  <label>Full Name</label>
                  {{ main.user | user:'fullName' }}
                </div>
                <div class="form-group">
                  <label>Type:</label>
                  {{ main.user | user:'type' }}
                </div>
              </form>
            </div>
          </div>
        </div>
    </body>
    </html>
  • 相关阅读:
    java课程之团队开发冲刺阶段1.10
    java课程之团队开发冲刺阶段1.9
    java课程之团队开发之用户模板和用户场景
    大二第二学期周学习进度总结(八)
    java课程之团队开发冲刺阶段1.8
    java课程课后作业190425之一维数组最大子数组—功能扩展(界面实现)
    java课程之团队开发冲刺阶段1.7
    java课程之团队开发冲刺阶段1.6
    Python函数-高级(闭包/装饰器)
    Python之函数
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5283666.html
Copyright © 2011-2022 走看看