尊重原創,轉載請註明出去:http://blog.csdn.net/zoutongyuan/article/details/41910903javascript
一、Ionic 是什麼?css
好吧,咱們看 Ionic 能給咱們提供什麼? 一個樣式庫,你可使用它 來 裝飾你的 HTML 網頁 ,看起來 想 移動程序的 界面,什麼 header 、content、footer、grid、list。這貌似沒什麼 實質性的東西, sencha touch ,jq 都能提供 。html
一個用 AngularJS 寫的 工具庫,姑且叫它 組件庫吧。Ionic的 grid 設計的比較合理,比 bootstrap的 更強大。java
固然它 還包含 了angular-animate、angular-resource、angular-sanitize、angular-ui-router,適應移動平臺的模塊庫。node
二、Apache Cordova 是什麼?android
Apache Cordova 提供用 Javascript 訪問 移動平臺 的 API 。ios
其內部是用每一個 平臺下的 web view 組件,運行 程序,而後實現了 每一個平臺下的 一套 CordovaLib 供你寫的程序調用,而後你就能夠 調用 攝像頭、磁盤等 重api。angularjs
接下來 動手玩玩。首先安裝nodejs,和平臺的 (ios || android)sdk,這裏不在 累述 web
親自測試!!npm
一、先安裝 cordova
npm install -g cordova
二、安裝 Ionic
npm install -g ionic
三、建立項目
ionic start todo(文件名) blank
四、配置平臺
ionic platform add android或者ionic platform add ios
而後 在IDE中打開 項目:
![](http://static.javashuo.com/static/loading.gif)
www是主目錄
index.html 是 主頁面
![](http://static.javashuo.com/static/loading.gif)
剛纔咱們配置 平臺的時候 ,工具幫咱們作了一件事,建立 了一個 安卓 應用,
建立一個 CordovaApp 類,繼承自 CordovaActivity , Activity 是 安卓的4大組件,表示能夠看到 了一塊窗口。
它作了一個 引導,就是loadUrl,這裏不作過多的 介紹,有興趣 咱們之後深刻研究,這裏咱們只是 發散性的引導。
如今,你就可使用 ionic 和 Apache Cordova 提供的 api 來 開發 跨平臺的應用了。
來改咱們的inde.html
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
- <title></title>
-
- <link href="lib/ionic/css/ionic.css" rel="stylesheet">
- <link href="css/style.css" rel="stylesheet">
-
- <!-- IF using Sass (run gulp sass first), then uncomment below and remove the CSS includes above
- <link href="css/ionic.app.css" rel="stylesheet">
- -->
-
-
- <script src="lib/ionic/js/ionic.bundle.js"></script>
-
-
- <script src="cordova.js"></script>
-
-
- <script src="js/app.js"></script>
- </head>
- <body ng-app="todoApp" ng-controller="TodoController" ng-cloak>
-
- <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>
-
- <script id="new-task.html" type="text/ng-template">
- <div class="modal">
-
-
- <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>
-
-
- <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?" autofocus 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>
-
- </body>
- </html>
js/app.js
- var todoApp = angular.module('todoApp', ['ionic']);
-
- todoApp.run(function ($ionicPlatform) {
- $ionicPlatform.ready(function () {
- if (window.cordova && window.cordova.plugins.Keyboard) {
- cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
- }
- if (window.StatusBar) {
- StatusBar.styleDefault();
- }
- });
- });
-
-
- todoApp.controller('TodoController', function ($scope, $timeout, $ionicModal, Projects, $ionicSideMenuDelegate) {
-
-
-
- var createProject = function (projectTitle) {
- var newProject = Projects.newProject(projectTitle);
- $scope.projects.push(newProject);
- Projects.save($scope.projects);
- $scope.selectProject(newProject, $scope.projects.length - 1);
- }
-
-
-
- $scope.projects = Projects.all();
-
-
- $scope.activeProject = $scope.projects[Projects.getLastActiveIndex()];
-
-
- $scope.newProject = function () {
- var projectTitle = prompt('Project name');
- if (projectTitle) {
- createProject(projectTitle);
- }
- };
-
-
- $scope.selectProject = function (project, index) {
- $scope.activeProject = project;
- Projects.setLastActiveIndex(index);
- $ionicSideMenuDelegate.toggleLeft(false);
- };
-
-
- $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();
-
-
- Projects.save($scope.projects);
-
- task.title = "";
- };
-
- $scope.newTask = function () {
- $scope.taskModal.show();
- };
-
- $scope.closeNewTask = function () {
- $scope.taskModal.hide();
- }
-
- $scope.toggleProjects = function () {
- $ionicSideMenuDelegate.toggleLeft();
- };
-
-
-
-
-
- $timeout(function () {
- if ($scope.projects.length == 0) {
- while (true) {
- var projectTitle = prompt('Your first project title:');
- if (projectTitle) {
- createProject(projectTitle);
- break;
- }
- }
- }
- });
-
- });
-
-
- todoApp.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) {
-
- return {
- title: projectTitle,
- tasks: []
- };
- },
- getLastActiveIndex: function () {
- return parseInt(window.localStorage['lastActiveProject']) || 0;
- },
- setLastActiveIndex: function (index) {
- window.localStorage['lastActiveProject'] = index;
- }
- }
- })
這個todo 咱們沒有用到 Apache Cordova 的api,因此,這個項目在瀏覽器中 也能夠運行。
使用
$ ionic serve
![](http://static.javashuo.com/static/loading.gif)
在個人小米3 中 看看。使用下面命令,你可能要安裝好 驅動,
$ ionic run android
![](http://static.javashuo.com/static/loading.gif)
最後編譯,
ionic serve 可能會讓你選擇IP地址
根據實際狀況選擇 也能夠手動選擇
ionic serve address {ipaddress}