Ionic-Angularjs-Restful-webService项目结构

时间:2017-06-28 06:31:27

标签: mysql angularjs web-services rest ionic-framework

有人可以给我一个Ionic-AngularJs-Spring(基于控制器)-Mysql的示例项目,它具有完整的UI端到端流程 - 数据库?

除此之外,请你给我POST,从UI到DB获取。

我在理解AngularJs与WebService之间的连接时遇到一些麻烦,我在POST时,从Ionic Sc​​reen获取数据并查看响应。

1 个答案:

答案 0 :(得分:1)

  对于api电话,您可以使用这种方式..

$http({
    url: "http://example.appspot.com/rest/app",
    method: "POST",
    data: {"foo":"bar"}
}).success(function(data, status, headers, config) {
    $scope.data = data;
}).error(function(data, status, headers, config) {
    $scope.status = status;
});



angular.module('ionicApp', ['ionic', 'ngMessages'])

.config(function($stateProvider, $urlRouterProvider) {

  $stateProvider
    .state('signin', {
      url: '/sign-in',
      templateUrl: 'templates/sign-in.html',
      controller: 'SignInCtrl'
    })
    .state('forgotpassword', {
      url: '/forgot-password',
      templateUrl: 'templates/forgot-password.html'
    })
    .state('tabs', {
      url: '/tab',
      abstract: true,
      templateUrl: 'templates/tabs.html'
    })
    .state('tabs.home', {
      url: '/home',
      views: {
        'home-tab': {
          templateUrl: 'templates/home.html',
          controller: 'HomeTabCtrl'
        }
      }
    })
    
    .state('tabs.facts2', {
      url: '/facts2',
      views: {
        'home-tab': {
          templateUrl: 'templates/facts2.html'
        }
      }
    })
    .state('tabs.about', {
      url: '/about',
      views: {
        'about-tab': {
          templateUrl: 'templates/about.html'
        }
      }
    })
    .state('tabs.navstack', {
      url: '/navstack',
      views: {
        'about-tab': {
          templateUrl: 'templates/nav-stack.html'
        }
      }
    })
    .state('tabs.contact', {
      url: '/contact',
      views: {
        'contact-tab': {
          templateUrl: 'templates/contact.html'
        }
      }
    });


   $urlRouterProvider.otherwise('/sign-in');

})

.controller('SignInCtrl', function($scope, $state) {
  $scope.user = {
    username: '',
    password : ''
  };
  $scope.signIn = function(form) {
    console.log(form);
    if(form.$valid) {
    console.log('Sign-In', $scope.user.username);
    $state.go('tabs.home');
    }
  };
  
})

.controller('HomeTabCtrl', function($scope) {
  console.log('HomeTabCtrl');
});

<html ng-app="ionicApp">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">

    <title>Sign-in, Then Tabs Example</title>

    <link href="//code.ionicframework.com/1.0.0-beta.14/css/ionic.min.css" rel="stylesheet">
    <script src="//code.ionicframework.com/1.0.0-beta.14/js/ionic.bundle.min.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular-messages.min.js"></script>

  </head>

  <body>

    <ion-nav-bar class="bar-positive">
      <ion-nav-back-button class="button-icon ion-arrow-left-c">
      </ion-nav-back-button>
    </ion-nav-bar>

    <ion-nav-view></ion-nav-view>

    <script id="templates/form-errors.html" type="text/ng-template">
      <div class="form-error" ng-message="required">This field is required.</div>
      <div class="form-error" ng-message="minlength">This field is must be at least 5 characters.</div>
      <div class="form-error" ng-message="maxlength">This field is must be less than 50 characters</div>
    </script>

    <script id="templates/sign-in.html" type="text/ng-template">
      <ion-view view-title="Sign-In">
        <ion-content class="padding">
          <form name="signinForm" novalidate="" ng-submit="signIn(signinForm)">

            <div class="list">
              <label class="item item-input" 
                     ng-class="{ 'has-error' : signinForm.username.$invalid}">
                <span class="input-label">Username</span>
                <input type="text"
                       name="username"
                       ng-model="user.username" 
                       ng-minlength="5" 
                       ng-maxlength="10" 
                       required>
              </label>

              <div class="form-errors" ng-messages="signinForm.username.$error" ng-messages-include="templates/form-errors.html">
                <div class="form-error" ng-message="maxlength">This field is must be less than 10 characters</div>
              </div>

              <label class="item item-input" 
                     ng-class="{ 'has-error-lr' : signinForm.password.$invalid  && signinForm.$submitted, 'valid-lr' : signinForm.password.$valid  && signinForm.$submitted}">
                <span class="input-label">Password</span>
                <input type="password"
                       name="password"
                       ng-model="user.password" 
                       ng-minlength="5" 
                       ng-maxlength="25"
                       required>
              </label>
              <div class="form-errors" 
                   ng-show="signinForm.password.$error && signinForm.$submitted"
                   ng-messages="signinForm.password.$error"
                   ng-messages-include="templates/form-errors.html">
              </div>
            </div>
            <div class="padding">
              <button class="button button-block button-positive">
                Sign-In
              </button>
              <p class="text-center">
                <a href="#/forgot-password">Forgot password</a>
              </p>
            </div>

          </form>
        </ion-content>
      </ion-view>
    </script>

    <script id="templates/forgot-password.html" type="text/ng-template">
      <ion-view view-title="Forgot Password">
        <ion-content padding="true">
          <p>
            Yeah this is just a demo showing how views can be shown without tabs, then you can navigate
            to views within tabs. Additionally, only one set of tabs needs to be written for all of the different views that should go inside the tabs. (Compared to written the same tab links in the footer of every view that's in a tab.)
          </p>
          <p>
            There's no username/password, just click
            the Sign-In button back a the sign-in view.
          </p>
          <p>
            Return to <a href="#/sign-in">Sign-In</a>.
          </p>
        </ion-content>
      </ion-view>
    </script>

    <script id="templates/tabs.html" type="text/ng-template">
      <ion-view>
        <ion-tabs class="tabs-icon-top tabs-positive">

          <ion-tab title="Home" icon="ion-home" href="#/tab/home">
            <ion-nav-view name="home-tab"></ion-nav-view>
          </ion-tab>

          <ion-tab title="About" icon="ion-ios7-information" href="#/tab/about">
            <ion-nav-view name="about-tab"></ion-nav-view>
          </ion-tab>

          <ion-tab title="Sign-Out" icon="ion-log-out" href="#/sign-in">
          </ion-tab>

        </ion-tabs>
      </ion-view>
    </script>

    <script id="templates/home.html" type="text/ng-template">
      <ion-view view-title="Home">
        <ion-content padding="true">
          <p>Example of Ionic tabs. Navigate to each tab, and
            navigate to child views of each tab and notice how
            each tab has its own navigation history.</p>
          <p>
            <a class="button icon icon-right ion-chevron-right" href="#/tab/facts">Scientific Facts</a>
          </p>
        </ion-content>
      </ion-view>
    </script>

    
    <script id="templates/facts2.html" type="text/ng-template">
      <ion-view view-title="Also Factual">
        <ion-content padding="true">
          <p>111,111,111 x 111,111,111 = 12,345,678,987,654,321</p>
          <p>1 in every 4 Americans has appeared on T.V.</p>
          <p>11% of the world is left-handed.</p>
          <p>1 in 8 Americans has worked at a McDonalds restaurant.</p>
          <p>$283,200 is the absolute highest amount of money you can win on Jeopardy.</p>
          <p>101 Dalmatians, Peter Pan, Lady and the Tramp, and Mulan are the only Disney cartoons where both parents are present and don't die throughout the movie.</p>
          <p>
            <a class="button icon ion-home" href="#/tab/home"> Home</a>
            <a class="button icon ion-chevron-left" href="#/tab/facts"> Scientific Facts</a>
          </p>
        </ion-content>
      </ion-view>
    </script>

    <script id="templates/about.html" type="text/ng-template">
      <ion-view view-title="About">
        <ion-content padding="true">
          <h3>Create hybrid mobile apps with the web technologies you love.</h3>
          <p>Free and open source, Ionic offers a library of mobile-optimized HTML, CSS and JS components for building highly interactive apps.</p>
          <p>Built with Sass and optimized for AngularJS.</p>
          <p>
            <a class="button icon icon-right ion-chevron-right" href="#/tab/navstack">Tabs Nav Stack</a>
          </p>
        </ion-content>
      </ion-view>
    </script>

    <script id="templates/nav-stack.html" type="text/ng-template">
      <ion-view view-title="Tab Nav Stack">
        <ion-content padding="true">
          <p><img src="https://ionicframework.com/img/diagrams/tabs-nav-stack.png" style="width:100%"></p>
        </ion-content>
      </ion-view>
    </script>

  </body>
</html>
&#13;
&#13;
&#13;