天天看点

通过Ionic构建一个简单的混合式(Hybrid)跨平台移动应用通过Ionic构建一个简单的混合式(Hybrid)跨平台移动应用

通过Ionic构建一个简单的混合式(Hybrid)跨平台移动应用通过Ionic构建一个简单的混合式(Hybrid)跨平台移动应用

<a target="_blank"></a>

接下来你要安装一个 cordova 和 ionic的命令行工具,操作如下:

npm install -g cordova ionic

 安装完成之后,你可以尝试开始创建一个工程:

  进入项目目录,添加ionic平台,创建应用,在虚拟机中运行,成为高富帅……

cd myionicapp

ionic platform add android

ionic build android

ionic emulate android

  下面就是样例应用的效果:

通过Ionic构建一个简单的混合式(Hybrid)跨平台移动应用通过Ionic构建一个简单的混合式(Hybrid)跨平台移动应用

我们已经有一个不错的开始了,现在我们来创建一个todo列表的应用,我们从空白模板开始:

ionic start mytodolist blank

  如果你进入到项目目录,你会看到angularjs文件,这是我们添加相关代码的地方。

&lt;ion-list&gt;

&lt;ion-item&gt;scuba diving&lt;/ion-item&gt;

&lt;ion-item&gt;climb mount everest&lt;/ion-item&gt;

&lt;/ion-list&gt;

  之后我们看一看添加ion-list之后我们的html文件是什么样的:

&lt;!doctype html&gt;

&lt;html&gt;

&lt;head&gt;

&lt;metacharset="utf-8"&gt;

&lt;metaname="viewport"content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width"&gt;

&lt;title&gt;&lt;/title&gt;

&lt;linkhref="lib/ionic/css/ionic.css"rel="stylesheet"&gt;

&lt;linkhref="css/style.css"rel="stylesheet"&gt;

&lt;!-- if using sass (run gulp sass first), then uncomment below and remove the css includes above

&lt;link href="css/ionic.app.css" rel="stylesheet"&gt;

--&gt;

&lt;!-- ionic/angularjs js --&gt;

&lt;scriptsrc="lib/ionic/js/ionic.bundle.js"&gt;&lt;/script&gt;

&lt;!-- cordova script (this will be a 404 during development) --&gt;

&lt;scriptsrc="cordova.js"&gt;&lt;/script&gt;

&lt;!-- your app's js --&gt;

&lt;scriptsrc="js/app.js"&gt;&lt;/script&gt;

&lt;/head&gt;

&lt;bodyng-app="starter"&gt;

&lt;ion-pane&gt;

&lt;ion-header-barclass="bar-stable"&gt;

&lt;h1class="title"&gt;my todo list&lt;/h1&gt;

&lt;/ion-header-bar&gt;

&lt;ion-content&gt;

&lt;/ion-content&gt;

&lt;/ion-pane&gt;

&lt;/body&gt;

&lt;/html&gt;

 然后我们可以在 www/js/中创建一个controllers.js文件,来定义一个新的cntroller,我们暂且叫它todolistctrl。这是controllers.js文件的内容:

angular.module('starter.controllers',[])

.controller('todolistctrl',function($scope){

});

  在上面的代码中,我们定义了一个叫starter的module和一个叫作calledtodolistctrl的controler。

然后我们就要把这个module加到我们的应用中了。打开www/js/app.js ,然后把module添加进去:

angular.module('starter',['ionic','starter.controllers'])

.run(function($ionicplatform){

$ionicplatform.ready(function(){

if(window.statusbar){

statusbar.styledefault();

}

})

  我们继续,定义一个$scope来携带todo list的条目,todolistctrl中声明一个新的$scope变量,如下: 

$scope.todolistitems =[{

task:'scuba diving',

status:'not done'

},{

task:'climb everest',

}]

  把controllers.js添加到index.html中:

&lt;ion-listng-controller="todolistctrl"&gt;

&lt;ion-itemng-repeat="item in todolistitems"&gt;

{{item.task}}

&lt;/ion-item&gt;

我们现在需要在index.html中添加一个button来触发事件:

&lt;scriptid="modal.html"type="text/ng-template"&gt;

&lt;div class="modal"&gt;

&lt;div class="bar bar-header bar-calm"&gt;

&lt;button class="button" ng-click="closemodal()"&gt;back&lt;/button&gt;

&lt;h1 class="title"&gt;add item&lt;/h1&gt;

&lt;/div&gt;

&lt;br&gt;&lt;/br&gt;

&lt;form ng-submit="additem(data)"&gt;

&lt;div class="list"&gt;

&lt;div class="list list-inset"&gt;

&lt;label class="item item-input"&gt;

&lt;input type="text" placeholder="todo item" ng-model="data.newitem"&gt;

&lt;/label&gt;

&lt;button class="button button-block button-positive" type="submit"&gt;

additem

&lt;/button&gt;

&lt;/form&gt;

&lt;/script&gt;

现在确认一下,在上面的操作中,我们在modal中添加了一个header,一个input box和一个button。

我们同样有需要一个回退的button在header中,它用来触发 closemodal() 功能。

现在我们开始绑定 ionic modal 到我们的 controller中,我们通过如下的方法把 $ionicmodal 注入到controller中:

.controller('todolistctrl',function($scope, $ionicmodal){

// array list which will contain the items added

$scope.todolistitems =[];

//init the modal

$ionicmodal.fromtemplateurl('modal.html',{

scope: $scope,

animation:'slide-in-up'

}).then(function(modal){

$scope.modal = modal;

// function to open the modal

$scope.openmodal =function(){

$scope.modal.show();

};

// function to close the modal

$scope.closemodal =function(){

$scope.modal.hide();

//cleanup the modal when we're done with it!

$scope.$on('$destroy',function(){

$scope.modal.remove();

//function to add items to the existing list

$scope.additem=function(data){

$scope.todolistitems.push({

task: data.newitem,

data.newitem ='';

$scope.closemodal();

 我们在上面的代码中使用了 .fromtemlateurl 来加载html的内容,然后在初始化的时候通过两个选项定义了$scope和animation的类型。 

当然我们也定义了打开、关闭moda和添加条目到数组的方法。

好了,万事俱备,虚拟机走起,看起来还不错吧。

原文发布时间:2014-12-08

本文来自云栖合作伙伴“linux中国”

继续阅读