ionic4 Hybrid App开发(二)

一、angular2基本语法

    ionic使用了google公司的angular作为前端框架。需要注意的是,由于版本更新,目前angular专指angular2.x以后的版本,而angularJS则是指angular1.x版本。这两个版本属于完全不同的框架,angularJS使用的是javascript语言,而angular则是使用的微软开发的typescript语言。

    Angular2.x使用的是es6的标准,官方文档:[https://www.angular.cn/](https://www.angular.cn/)。

    如果使用VsCode作为开发编辑器,则需要安装以下几个扩展工具,否则不会出现代码自动补全提示:
image

** a、数据绑定**

    单向文本绑定:{{}};

    双向数据绑定:[(ngModel)]="";
image
    html绑定:[innerHTML]
image

** b、ng指令**

      **  NgClass**

    利用NgClass指令,可以同时添加或移除多个类。NgClass绑定一个有形如CSS类名:value的对象,其中value的值是一个布尔型的值,当value值为true时,添加对应类型的模板元素,反之则移除。

<div [ngClass]="{green:false}"></div>

    ngClass支持三元运算。

        **NgIf**

       指定绑定一个布尔型的表达式,当表达式返回true时,可以在DOM树节点上添加一个元素及其子元素,反之被移除

<div *ngIf="isChecked"></div>

        同样 ngIf也支持三元运算。

      **  NgFor**

    ngFor用于在页面上循环数据,其默认索引为index。
<ul>

    <li *ngFor="let i of citys,let key = index">{{i}}</li>

</ul>

需要注意的是,ngFor只能用来循环数组,如果需要使用ngFor循环对象Object,则可以使用下面的方法:


<div *ngFor="let item of items">
    <div *ngFor="let v of getVal(item)">{{v}} == {{item[v]}}</div>

</div>

    getVal(item){

        return Object.keys(item)    

    }

**NgSwitch**

ngSwitch主要用于多选项判断。


    <div [ngSwitch]="selectedIndex">

        <p *ngSwitchCase="1">beijing<p>

        <p *ngSwitchDefault>shanghai</p>

    <div>

** ngStyle**

ngStyle用于输出css,通常与三元判断绑定。

<div [ngStyle]="{'color':is_login? 'red':'grey'}"></div>

其他非常用指令可参考官方文档或自行百度即可。

**c、事件绑定**

    根据官方文档(https://www.angular.cn/guide/template-syntax#event-binding),angular中的事件绑定机制可以响应任何DOM事件。(大雾)

`
<button (click)="doThing()">点击</button>
`

     **可以通过$event获取DOM事件对象:**

```    
    <input (keyup)="input($event)">

    input(e:any){

        console.log(e.target.value)

    }

```

d、箭头函数

ES6标准新增了一种新的函数:Arrow Function(箭头函数)。

    标准写法:a=>{x*x}  相当于:
            function(a){

                return x * x;

            }

    如果有多个参数:()=>{}  


>箭头函数的本质其实就是lambda表达式,主要作用是用于闭包,但与匿名函数不同:

    1、函数体内的this对象,绑定定义时所在的对象,而不是使用时所在的对象。

    2、不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。

    3、不可以使用arguments对象,该对象在函数体内不存在。

    **第一点尤其值得注意。this对象的指向是可变的,但是在箭头函数中,它是固定的。**

e、var let const

    ES6中新增了 let 方法用于声明变量,具体使用方法与 var 类似,但let声明的变量尽在其所在的代码块内有效。

    const 声明一个只读的常量。一旦声明,常量的值就不能改变。与let一样,只在所属代码区块有效。

    与var不同,let 和 const 都不可重复声明,且都必须先声明才能使用

   ** 具体关于ES6的内容,可以参考阮一峰的文章:http://es6.ruanyifeng.com/#docs/function**

二、新建页面

使用命令行cd到根目录后,使用ionic g 命令即可自动生成页面(page)、组件(component)、服务(provider)和管道(pipe)等。
image
系统会自动生成相关文件:
image
**关于scss:**

    scss是对css的扩展,因此其本身可以完全兼容css。

   ** 1、scss变量**

    scss里可以申明变量然后调用变量,申明方式与php一致为“$”:

$width: 5em;

直接使用即调用变量:

    #main {

      width: $width;

    }

    2、scss嵌套

    Scss 允许将一套 CSS 样式嵌套进另一套样式中,内层的样式将它外层的选择器作为父选择器,避免了重复输入选择器:

#main {

  width: 97%;

  p, div {

    font-size: 2em;

    a { font-weight: bold; }

  }

  pre { font-size: 3em; }

}

编译后等于:


#main {width: 97%; }

#main p, #main div { font-size: 2em; }

#main p a, #main div a {font-weight: bold; }

#main pre {font-size: 3em; }

更多scss用法,可参考官方文档:https://www.sass.hk/docs/

TIP:

1、在ionic2.x以上项目中,有时会出现android端样式与ios端不统一,就可以在app.module.ts里统一强制使用ios端样式:

image

2、ionic会为每个页面都单独会生成一个scss文件,打开后会看到 page-你的页面名称{ },表示这个样式文件只对该页面生效

image

如果你想全局定义css样式,可已在theme文件夹下的variables.scss里定义:

image

也可以将css写在page-market{}的花括号外,同样能全局定义:

image

3、有时当你更改代码并保存后发现无效或者报错,检查代码无误则需要重新运行 ionic serve,这是由于ionic的热更新功能出错导致的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容