1.SASS
(1)概念:sass是一个css的预处理器,是css的超集;这意味着你可以定期写CSS和Sass了解它。SASS编译到CSS,因此,浏览器需要特殊的东西;
(2)sass提供了大量的css没有的特征,比如变量,筑巢,和继承,但是这个几个特征对于我们自定义样式是很有用的;
(3)资源url: http://sass-lang.com/;
(4)Ionic使用sass编写自己的样式(styling),并且使用了大量的变量。变量控制的主要有颜色样式,字体,边距,边框上,和更多的。我们能继承这些变量,并且那时生成我们自己的新值;
2.SASS环境搭建
(1)dos 执行命令:npm install -g gulp;
(2)dos 执行命令:npm install gulp --save-dev
(3)dos 执行命令:npm install gulp-ruby-sass gulp-autoprefixer gulp-minify-css gulp-jshint gulp-concat gulp-uglify gulp-imagemin gulp-clean gulp-notifygulp-rename gulp-livereload gulp-cache --save-dev;
3.SASS在ionic项目使用
(1)在ionic start myapp ...生成的项目主目录下执行 doc 命令:ionic setup sass(必须执行,否则不能进行下面的重新编译的操作) ,就会生成node_modules文件夹,里面包含了gulp所要依赖的模块
(2)重新编译scss文件dos命令:gulp sass,执行一次,但是如果实时执行,就设置用dos命令:gulp watch设置监听;而且设置完之前两个命令后(不执行也行),执行startserve时,每次都会先执行scss文件的重新编译,之后才启动服务;
4.自定义scss
(1)在scss文件夹下,创建自己的scss文件;
(2)导入自定义的scss文件在ionic.app.scss文件中,和导入Ionic Style文件一样,但是自定义的文件导入必须在ionic-style文件之后,语法:@import "customizations"
(3)可以自定义scss文件在www文件夹下面,但是注意两点:一、在主app文件中导入时文件路径得修改成'www/...';二、默认情况,Gulp task 认为你会将所有的.scss文件都放在scss文件夹下面,因此在www下的scss文件不会被wather监听,导致不能监听到www下scss文件变更,但是可以通过修改gulpfile.js文件来实现对www下的scss文件也进行监听,
varpaths = {
sass: ['./scss/**/*.scss']
};
可以看到,监听路径是个对应的数组,我们只要将www下的scss路径添加进去,即可实现修改的监听;
5.手势事件
(1)两种方式,一、ionic提供了一些事件,可以通过创建ionic指令,基于ionic提供的事件实现;二、添加监听事件在你的控制器中(controller),使用ionic提供的$ionicGesture服务;
(2)
6.$apply()和$digest()
(1)在监听事件中修改了model的值,
(2)$scope.left = event.gesture.deltaX;
(3)所以需要手动调用$digest循环运行,在循环过程中watcher会被调用,检查model是否发生变化,如果发生变化对应的监听函数会被执行,进而实现Model和View数据双向绑定同步至少循环两次,直到model不再发生变化为止,这就是脏检查;因此尽可能不要在监听函数中修改model的值,一般会自动执行的,但是在外部修改或者监听事件中修改model的值时,就只能手动调用一般是由$apply()来实现的,因为调用$apply()后,会自动执行$digest(),而且$apply()方法的两种调用方式,无参数,和有参数,无参数直接$apply(),即可;有参数的$apply(function(){..//你的修改model的代码块//..}),有参数的,参数会被包含在try...catch中,出错是由系统帮忙处理。有参数样式:$scope.$apply(function() { ... }) ;
7.localStorage,WebSQL 和 IndexedDB
(1)localStorage.setItems(key,value);
(2)WebSql由于不同的浏览器厂商的不同导致在2010被放弃使用了,在这本书写作时,只有android和ios两个在使用,但是随着时间的推移它将可能被放弃;而且cordova是很好的支持的,
(3)IndexedDB是一个对象储存,支持不同的数据类型储存,它有一个域这个域有不同的数据类型,通过这个域可以获取相应类型的数据,但是在写这本书时,android和ios还不支持;
(4)cordova数据库支持文档:http://cordova.apache.org/docs/en/edge/cordova_storage_storage.md.html#Storage ; 通过这个文档我们可以选择我们平台应该适合哪个数据库储存;
(5)cordova storage plugins : http://plugins.cordova.io/ ;
(6)Android:
(7)IOS:
8.Ionic
(1)ionic.Platform服务提供了有光平台的方法:isIOS(),isAndroid(),或者platform()返回平台的名称;
(2)$ionicConfigProvider初始化配置,
.config($ionicConfigProvider.tabs.style('striped').position('bottom'));
android实现将tabs显示在底部