ionic www/js文件

今天是学习ionic的第三天 ,越来越觉得ionic有意思,好用

昨天重点看了www中有哪些主要的文件,今天就重点看了www/js中每个js的功能和使用方法 然后实现了一个简单的二级应用

今天在www/js中建立了4个js文件:app.js、controllers.js、routes.js、services.js

1.app.js

// 创建应用程序
angular.module('turbo',['ionic','controllers','routes',"services"]);
首先创建了一个ionic的应用程序,取名字为“turbo"(在index.html的body或者html标签中通过angulerjs的ng-app="turbo"引入)。

然后在[]中引入依次‘ionic','controllers','routes','services',除了’ionic',后三者都即将在之后js中被创建

好了,app.js作为主程序就这些内容。


2、controllers.js

//创建应用程序
angular.module('controllers',[])
    .controller('homeController',function ($scope,News) {
            $scope.allNews = News.getAllNews();
    })
    .controller('homeDetailController',function ($scope,$stateParams,News) {
            $scope.thisNews = News.gerNewsForId($stateParams.newsID);
        
    })
    .controller('settingController',function ($scope) {

    })
首先也是创建一个名为‘controllers'的应用程序

后面创建了3个控制器,用于不同模块的应用:主页控制器、主页二级页面控制器、设置页面控制器

ps:今天这里控制器中写的很简单,把services.js中的方法引用过来了

*****注意:

控制器的一些特点:

1)控制器是用来协调视图与模型的关系的,尽量不要在其中写过多逻辑代码

2)控制器有生命周期,不使用它时即被销毁,销毁之后,数据也将不存在

3)控制器中的数据模型相当于私有的,有些数据模型可能要被不同的控制器使用,这里我们将数据模型写在services.js中的factory中,这样全局都可以访问,不同的控制器都可以调用它


3、routes.js

angular.module("routes",[])
.config(function ($stateProvider, $urlRouterProvider) {
    $stateProvider
        .state("tab",{
            url:"/tab",
            abstract:true,
            templateUrl:"templates/tabs.html"
        })
        .state("tab.home",{
            url:"/home",
            views:{
                 "tab-home":{
                     templateUrl:"templates/home.html",
                     controller:"homeController"
                 }
            }
        })
        .state("tab.setting",{
            url:"/setting",
            views:{
                "tab-setting":{
                    templateUrl:"templates/setting.html",
                    controller:"settingController"
                }
            }
        })
        
        .state("tab.homeDetail",{
            url:"/home/:newsID",
            views:{
                "tab-home":{
                    templateUrl:"templates/homeDetail.html",
                    controller:"homeDetailController" 
                }
            }
        })
    $urlRouterProvider.otherwise("/tab/home");
})
首先是创建一个名为“routes”的应用程序
第一个.state是创建了一个路径的开始,名字取为“tab"(这个名字可以任意取),url为”/tab"(url的开始),templateUrl:为“templates/tabs.html"
可以这样理解:以文件templates/tabs.html为开始路径,并给他的开始路径取名为”tab",之后从文件templates/tabs.html分发出去的文件将以“tab"作为路径的开始。
第二个.state是创建了一个视图,是tabs.html的其中之一视图,路径为”/tab/home",views是显示视图的文件操作,包括文件是什么(templates/home.html
)和文件是怎样的(homeController)。
第三个.state是设置页面,和第二个类似。
第四个.state是tab.home的子视图,url稍微有些不同,此视图的内容显示在home页面。
4、services.js
angular.module("services",[])
.factory("News",function () {
    //声明需要的数据  一般从后台数据库读取
   var newsList = [{id:0,newsTitle:"土拨鼠即将归来",image:"img/0.jpg",subTitle:"turbo爱米粒",des:"turboemily may you happy everyday!"},
                   {id:1,newsTitle:"土拨鼠明天归来",image:"img/1.jpg",subTitle:"turbo很爱米粒",des:"turboemily may you happy everyday!"},
                   {id:2,newsTitle:"土拨鼠一定归来",image:"img/2.jpg",subTitle:"turbo狠狠爱米粒",des:"turboemily may you happy everyday!"},
                   {id:3,newsTitle:"土拨鼠很快归来",image:"img/3.jpg",subTitle:"turbo爱不完米粒",des:"turboemily may you happy everyday!"},
                   {id:4,newsTitle:"土拨鼠马上归来",image:"img/4.jpg",subTitle:"turbo很爱很爱米粒",des:"turboemily may you happy everyday!"},
                   {id:5,newsTitle:"土拨鼠归来啦啦",image:"img/5.jpg",subTitle:"turbo爱爱爱不完米粒",des:"turboemily may you happy everyday!"}
   ];

    
    return{
       
        getAllNews:function () {
            return newsList;
        },
      
        gerNewsForId:function (newsID) {
            for(var i=0 ;i < newsList.length; i++){
                if(newsList[i].id === parseInt(newsID)){
                    return newsList[i];
                }
            }
            return null;
        }
    }
});
首先创建名为services的应用程序,通过.factory创建共有方法提供给controllers.js中的控制器使用,方法看具体的实现效果而写,今天我们写的是一个简单的新闻消息列表及新闻详情

IONIC 功能全演示 ===================== - 使用Ionic提供的UI 组件。Ionic本身是致力于建立统一的移动混合app构建平台,核心基础是Angular+Cordova。 - 通过Angular指令封装,以及预定义的CSS,提供了开箱即用的HTML5 Mobile组件。 - 构建与开发支持,能够直接运行www目录下的index.html进行开发调试。同时也支持发布人员利用gulp构建输出到dist目录 - 利用gulp,同样演示了单元测试以及场景测试。 - [在线演示,内有地址二维码,可手机浏览](http://1.thm1118.sinaapp.com/static/ionic/www/index.html) ## 预览 ![信息卡片](screenshot/card.png) ![下拉刷新](screenshot/pullrefress.png) ![表单元素](screenshot/form.png) ![菜单](screenshot/menu.png) ![列表左滑按钮](screenshot/option.png) ![弹出层](screenshot/pop.png) ![tab](screenshot/tab.png) ![幻灯](screenshot/slide.png) ![图片水平滚动](screenshot/hscroll.png) ![毛玻璃效果](screenshot/blure.png) ![2000条数据搜索](screenshot/search.png) ![输入自动完成](screenshot/autocomplete.png) ![列表自动分组](screenshot/autogroup.png) ![媒体相册](screenshot/galaxy.png) ![chartjs统计图](screenshot/chartjs.png) ![百度统计图](screenshot/echat.png) ![图片延时加载](screenshot/imageload.png) ## 基础环境 纯webapp运行或演示,只需要一个 web server部署即可。 ## 目录结构说明 - www 目录:源码目录 - dist目录:构建输出目录 ## 利于开发,测试和打包部署的nodejs环境 简单开发可以不依赖nodejs环境。但是有了基于nodejs的javascript完整开发周期环境,会极大提升开发效率,保障质量。 - nodejs 最新版。 - 有些node包的安装需要c++编译,x86版本只需要 x86的C++编译器,windows上的x64 c++编译器需要特别设置。 - npm 会很慢,要么使用代理,要么使用国内镜像,比如 [淘宝镜像](http://npm.taobao.org/) , 使用淘宝镜像后,npm命令需要替换成cnpm命令。 - `npm install -g gulp` - `npm install -g ionic` - 如需编译sass的话,安装 [ruby](https://www.ruby-lang.org/zh_cn/),再执行 `gem install sass`(如遇到ssl错误,修改为http源:gem source -a http://rubygems.org/) - `npm install -g node-gyp` - 有的node包依赖python编译,安装 [python2.7](https://www.python.org/) - c++编译环境[MSVStudio 免费版](https://www.visualstudio.com/downloads/download-visual-studio-vs#d-express-windows-desktop).。注意根据studio不同版本指定 --msvs_version=2013 选项 - 安装项目开发依赖包,在项目根目录下运行 `npm install` ### “所见即所得”式开发 - 在项目根目录下运行 `ionic serve`,即可在www目录下开展“所见即所得”的方式开发 - 另外一种方式,在webstorm里对index.html 按debug运行,同样是“所见即所得”的方式开发 ### CROS支持 - 生产环境的 CROS支持要么使用jsonp技术,要么在服务端设置代理。 - 而开发环境下要么 基于不安全做法,服务端api 设置头`Access-Control-Allow-Origin:*" `,要么按如下便捷设置: 基于`ionic serve`, 可以在开发时使用本地代理。ionic.project 内设
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值