Latest web development tutorials

ionische schaffen APP

In den vorangegangenen Kapiteln haben wir gelernt, wie ionische Rahmen in das Projekt.

Wir werden nächstes vorstellen, wie eine ionische APP-Anwendung zu erstellen.

ionische erstellen APP mit HTML, CSS und Javascript zu bauen, so können wir eine www-Verzeichnis, und erstellen Sie die Datei index.html im Verzeichnis zu erstellen, wie folgt:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Todo</title>
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">

    <link href="lib/ionic/css/ionic.css" rel="stylesheet">

    <script src="lib/ionic/js/ionic.bundle.js"></script>

    <!-- 在使用 Cordova/PhoneGap 创建的 APP 中包含的文件,由 Cordova/PhoneGap 提供,(开发过程中显示 404) -->
    <script src="cordova.js"></script>
  </head>
  <body>
  </body>
</html>

Der obige Code, haben wir die Ionic CSS-Datei, Ionic JS-Dateierweiterung und Ionic AngularJS ionic.bundle.js (ionic.bundle.js).

ionic.bundle.js Datei enthält bereits Ionic Kern JS, AngularJS, Ionic Erweiterung von AngularJS, Angular wenn Sie andere Module einführen müssen, können von lib / js / Winkel Verzeichnis aufgerufen werden.

cordova.js bei der Verwendung von Cordova / PhoneGap Erstellen Sie die Anwendung erzeugen und erfordert keine manuelle Einführung, können Sie die Datei in Cordova / PhoneGap Projekt finden können, so dass die Anzeige in den Entwicklungsprozess ist 404 normal.


erstellen APP

Als nächstes kommen wir um die Anwendung zu erkennen, dass der Titel, Seitenleiste enthält, Listen, usw., das Design ist wie folgt:

erstellen Sidebar

Sidebar erstellt das Ion-side-Menüs Controller.

Bearbeiten Datei index.html erstellt wir früher, um den Inhalt des <body> zu ändern, wie folgt:

<body>
  <ion-side-menus>
    <ion-side-menu-content>
    </ion-side-menu-content>
    <ion-side-menu side="left">
    </ion-side-menu>
  </ion-side-menus>
</body>

Controller interpretieren:

  • Ion-Side-Menüs: ein Behälter mit einem Sidebar - Menü können Sie auf eine Schaltfläche klicken oder den Bildschirm schieben Sie das Menü zu erweitern.
  • Ion-side-Menü-Inhalt: den Hauptinhalt des Behälters anzuzeigen, können Sie das Menü erweitern , indem Sie den Bildschirm schieben.
  • Ion-side-Menü: Behälter Sidebar.

Initialisierung APP

Als nächstes erstellen wir ein neues AngularJS Modul und initialisieren Code ist www / js / app.js in:

angular.module('todo', ['ionic'])

Nachdem Sie ng-App-Eigenschaft in unserem Körper-Tag hinzu:

<body ng-app="todo">

In der Datei index.html <script src = "cordova.js"> </ script> Das oben eingeführt app.js Datei:

<script src="js/app.js"></script>

Ändern Sie den Inhalt der Datei index.html Body-Tag, wird der Code wie folgt:

<body ng-app="todo">
  <ion-side-menus>

    <!-- 中心内容 -->
    <ion-side-menu-content>
      <ion-header-bar class="bar-dark">
        <h1 class="title">Todo</h1>
      </ion-header-bar>
      <ion-content>
      </ion-content>
    </ion-side-menu-content>

    <!-- 左侧菜单 -->
    <ion-side-menu side="left">
      <ion-header-bar class="bar-dark">
        <h1 class="title">Projects</h1>
      </ion-header-bar>
    </ion-side-menu>

  </ion-side-menus>
</body>

Versuchen »

Wir haben die obigen Schritte ionischen Grund APP-Anwendungen abgeschlossen.


Erstellen Sie eine Liste

Erstellen Sie zunächst ein ControllerTodoCtrl:

<body ng-app="todo" ng-controller="TodoCtrl">

In app.js Datei, verwenden Sie den Controller eine Liste der Daten zu definieren:

angular.module('todo', ['ionic'])

.controller('TodoCtrl', function($scope) {
  $scope.tasks = [
    { title: '本教程' },
    { title: 'www.w3big.com' },
    { title: '本教程' },
    { title: 'www.w3big.com' }
  ];
});

Daten index.html Seite in der Liste, die wir Angular ng-repeat Daten iterieren verwenden, um:

<!-- 中心内容 -->
<ion-side-menu-content>
  <ion-header-bar class="bar-dark">
    <h1 class="title">Todo</h1>
  </ion-header-bar>
  <ion-content>
    <!-- 列表 -->
    <ion-list>
      <ion-item ng-repeat="task in tasks">
        {{task.title}}
      </ion-item>
    </ion-list>
  </ion-content>
</ion-side-menu-content>

index.html Body-Tag im Code nach der Änderung ist wie folgt:

 <body ng-app="todo" ng-controller="TodoCtrl">
    <ion-side-menus>

    <!-- 中心内容 -->
    <ion-side-menu-content>
      <ion-header-bar class="bar-dark">
        <h1 class="title">Todo</h1>
      </ion-header-bar>
      <ion-content>
        <!-- 列表 -->
        <ion-list>
          <ion-item ng-repeat="task in tasks">
            {{task.title}}
          </ion-item>
        </ion-list>
      </ion-content>
    </ion-side-menu-content>

    <!-- 左侧菜单 -->
    <ion-side-menu side="left">
      <ion-header-bar class="bar-dark">
        <h1 class="title">Projects</h1>
      </ion-header-bar>
    </ion-side-menu>

    </ion-side-menus>
    <script src="http://www.w3big.com/static/ionic/js/app.js"></script>
    <script src="cordova.js"></script>
</body>

Versuchen »


Erstellen Sie Seiten hinzufügen

Ändern Sie index.html in</ ion-side-Menüs> Nachdem Sie den folgenden Code hinzu:

<script id="new-task.html" type="text/ng-template">

  <div class="modal">

    <!-- Modal header bar -->
    <ion-header-bar class="bar-secondary">
      <h1 class="title">New Task</h1>
      <button class="button button-clear button-positive" ng-click="closeNewTask()">Cancel</button>
    </ion-header-bar>

    <!-- Modal content area -->
    <ion-content>

      <form ng-submit="createTask(task)">
        <div class="list">
          <label class="item item-input">
            <input type="text" placeholder="What do you need to do?" ng-model="task.title">
          </label>
        </div>
        <div class="padding">
          <button type="submit" class="button button-block button-positive">Create Task</button>
        </div>
      </form>

    </ion-content>

  </div>

</script>

Durch den obigen Code<script id = "new-task.html " type = "text / ng-template"> definiert eine neue Vorlagenseite.

Create (Task) Funktion wird ausgelöst, wenn das Formular abgeschickt wird.

ng-Modell = Eingangsdaten "task.title" Formular wird an der Aufgabe Objekttitel Attribut zugeordnet werden.

Gehalt<ionenNebenMenü-Gehalt > innerhalb des Codes ist wie folgt:

<!-- 中心内容 -->
<ion-side-menu-content>
<ion-header-bar class="bar-dark">
  <h1 class="title">Todo</h1>
  <!-- 新增按钮-->
  <button class="button button-icon" ng-click="newTask()">
    <i class="icon ion-compose"></i>
  </button>
</ion-header-bar>
<ion-content>
  <!-- 列表 -->
  <ion-list>
    <ion-item ng-repeat="task in tasks">
      {{task.title}}
    </ion-item>
  </ion-list>
</ion-content>
</ion-side-menu-content>

app.js Datei, die Code-Controller wie folgt:

angular.module('todo', ['ionic'])

.controller('TodoCtrl', function($scope, $ionicModal) {
  $scope.tasks = [
    { title: '本教程' },
    { title: 'www.w3big.com' },
    { title: '本教程' },
    { title: 'www.w3big.com' }
  ];

  // 创建并载入模型
  $ionicModal.fromTemplateUrl('new-task.html', function(modal) {
    $scope.taskModal = modal;
  }, {
    scope: $scope,
    animation: 'slide-in-up'
  });

  // 表单提交时调用
  $scope.createTask = function(task) {
    $scope.tasks.push({
      title: task.title
    });
    $scope.taskModal.hide();
    task.title = "";
  };

  // 打开新增的模型
  $scope.newTask = function() {
    $scope.taskModal.show();
  };

  // 关闭新增的模型
  $scope.closeNewTask = function() {
    $scope.taskModal.hide();
  };
});

erstellen Sidebar

Durch die oben genannten Schritte, die wir neue Funktionen implementiert haben, jetzt fügen wir Funktionalität App sidebar.

Gehalt<ionenNebenMenü-Gehalt > innerhalb des Codes ist wie folgt:

<!-- 中心内容 -->
<ion-side-menu-content>
  <ion-header-bar class="bar-dark">
    <button class="button button-icon" ng-click="toggleProjects()">
      <i class="icon ion-navicon"></i>
    </button>
    <h1 class="title">{{activeProject.title}}</h1>
    <!-- 新增按钮 -->
    <button class="button button-icon" ng-click="newTask()">
      <i class="icon ion-compose"></i>
    </button>
  </ion-header-bar>
  <ion-content scroll="false">
    <ion-list>
      <ion-item ng-repeat="task in activeProject.tasks">
        {{task.title}}
      </ion-item>
    </ion-list>
  </ion-content>
</ion-side-menu-content>

Fügen Sie eine Seitenleiste:

<!-- 左边栏 -->
<ion-side-menu side="left">
<ion-header-bar class="bar-dark">
  <h1 class="title">Projects</h1>
  <button class="button button-icon ion-plus" ng-click="newProject()">
  </button>
</ion-header-bar>
<ion-content scroll="false">
  <ion-list>
    <ion-item ng-repeat="project in projects" ng-click="selectProject(project, $index)" ng-class="{active: activeProject == project}">
      {{project.title}}
    </ion-item>
  </ion-list>
</ion-content>
</ion-side-menu>

<Ion-item> ng-Klasse Anweisung im Setup-Menü aktiv Stil.

Hier schaffen wir eine neue js Datei app2.js (nicht zu verwechseln mit dem vorhergehenden zu werden), wie folgt:

angular.module('todo', ['ionic'])
/**
 * The Projects factory handles saving and loading projects
 * from local storage, and also lets us save and load the
 * last active project index.
 */
.factory('Projects', function() {
  return {
    all: function() {
      var projectString = window.localStorage['projects'];
      if(projectString) {
        return angular.fromJson(projectString);
      }
      return [];
    },
    save: function(projects) {
      window.localStorage['projects'] = angular.toJson(projects);
    },
    newProject: function(projectTitle) {
      // Add a new project
      return {
        title: projectTitle,
        tasks: []
      };
    },
    getLastActiveIndex: function() {
      return parseInt(window.localStorage['lastActiveProject']) || 0;
    },
    setLastActiveIndex: function(index) {
      window.localStorage['lastActiveProject'] = index;
    }
  }
})

.controller('TodoCtrl', function($scope, $timeout, $ionicModal, Projects, $ionicSideMenuDelegate) {

  // A utility function for creating a new project
  // with the given projectTitle
  var createProject = function(projectTitle) {
    var newProject = Projects.newProject(projectTitle);
    $scope.projects.push(newProject);
    Projects.save($scope.projects);
    $scope.selectProject(newProject, $scope.projects.length-1);
  }


  // Load or initialize projects
  $scope.projects = Projects.all();

  // Grab the last active, or the first project
  $scope.activeProject = $scope.projects[Projects.getLastActiveIndex()];

  // Called to create a new project
  $scope.newProject = function() {
    var projectTitle = prompt('Project name');
    if(projectTitle) {
      createProject(projectTitle);
    }
  };

  // Called to select the given project
  $scope.selectProject = function(project, index) {
    $scope.activeProject = project;
    Projects.setLastActiveIndex(index);
    $ionicSideMenuDelegate.toggleLeft(false);
  };

  // Create our modal
  $ionicModal.fromTemplateUrl('new-task.html', function(modal) {
    $scope.taskModal = modal;
  }, {
    scope: $scope
  });

  $scope.createTask = function(task) {
    if(!$scope.activeProject || !task) {
      return;
    }
    $scope.activeProject.tasks.push({
      title: task.title
    });
    $scope.taskModal.hide();

    // Inefficient, but save all the projects
    Projects.save($scope.projects);

    task.title = "";
  };

  $scope.newTask = function() {
    $scope.taskModal.show();
  };

  $scope.closeNewTask = function() {
    $scope.taskModal.hide();
  }

  $scope.toggleProjects = function() {
    $ionicSideMenuDelegate.toggleLeft();
  };


  // Try to create the first project, make sure to defer
  // this by using $timeout so everything is initialized
  // properly
  $timeout(function() {
    if($scope.projects.length == 0) {
      while(true) {
        var projectTitle = prompt('Your first project title:');
        if(projectTitle) {
          createProject(projectTitle);
          break;
        }
      }
    }
  });

});

Körper in Ion-side-Menüs Code ist wie folgt ::

<ion-side-menus>

<!-- 中心内容 -->
<ion-side-menu-content>
  <ion-header-bar class="bar-dark">
    <button class="button button-icon" ng-click="toggleProjects()">
      <i class="icon ion-navicon"></i>
    </button>
    <h1 class="title">{{activeProject.title}}</h1>
    <!-- 新增按钮 -->
    <button class="button button-icon" ng-click="newTask()">
      <i class="icon ion-compose"></i>
    </button>
  </ion-header-bar>
  <ion-content scroll="false">
    <ion-list>
      <ion-item ng-repeat="task in activeProject.tasks">
        {{task.title}}
      </ion-item>
    </ion-list>
  </ion-content>
</ion-side-menu-content>

<!-- 左边栏 -->
<ion-side-menu side="left">
<ion-header-bar class="bar-dark">
  <h1 class="title">Projects</h1>
  <button class="button button-icon ion-plus" ng-click="newProject()">
  </button>
</ion-header-bar>
<ion-content scroll="false">
  <ion-list>
    <ion-item ng-repeat="project in projects" ng-click="selectProject(project, $index)" ng-class="{active: activeProject == project}">
      {{project.title}}
    </ion-item>
  </ion-list>
</ion-content>
</ion-side-menu>

</ion-side-menus>

Versuchen »