ionic准备之angular基础———服务provider 和 factory(9)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body ng-app="myApp">
    <div ng-controller="firstController">
        <ul>
            <li ng-repeat="item in name">{{item}}</li>
        </ul>
    </div>
</body>
<script src="angular/angular.js"></script>
<script type="text/javascript">
    var app=angular.module("myApp",[],function($provide){
        /*创建服务factory*/
        $provide.factory("myFactory",function(){
            var server={};
            server.getMessage=function(){
                return "this is  a message";
            }

            return server;
        });
        /*用provider创建服务*/
        $provide.provider("myprovider2",function(){

            this.$get=function(){
                var server={};
                server.getMessage=function(){
                    return "this is provider2";
                }

                return server;
            }

        });
    });

    /*也可以再config中定义服务*/
    app.config(function($provide){
        /*自定义服务*/
        $provide.provider("myProvider",function(){
            this.$get=function(){

                var server={};
                server.getName=function(){
                    var name={
                        name:"tanxu",
                        nickName:"xuxu"
                    }

                    return name;
                }
                return server;
            }

        });
    });

    app.controller(‘firstController‘,function($scope,$filter,myProvider,myprovider2,myFactory){
        //用provider
        $scope.name=myProvider.getName();
         console.log($scope.name);

        $scope.name1=myprovider2.getMessage();

        console.log($scope.name1);
        //
         //用factory
         $scope.msg=myFactory.getMessage();
         console.log($scope.msg);
    });

</script>
</html>

我们可以再config中创建服务,或者在module中直接创建,利用provider创建需要this.get()匿名函数,而factory可以直接返回字符串或者对象,建议基于对象去返回。

那么这样会不会太乱,当然还有更好更直观的创建方式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body ng-app="myApp">
    <div ng-controller="firstController">
        <ul>
            <li ng-repeat="item in name">{{item}}</li>
        </ul>
    </div>
</body>
<script src="angular/angular.js"></script>
<script src="service.js"></script>
<script type="text/javascript">
    var app=angular.module("myApp",[‘myService‘]);   //引入服务依赖

    /*定义服务*/
    app.service("service1",function(){
        return {
            message:"qwewe"
        }
    })

    /*定义服务,用provider必须使用get方法*/
    app.provider("provider1",function(){
        this.$get=function(){
            return {
                message:"q34234324"
            }
        }

    })

    /*定义服务*/
    app.factory("myfactory",function(){
        return {
            message:"myfactory"
        }
    })

    /**/
    app.controller(‘firstController‘,function($scope,service1,provider1,myfactory,getMessageFactory){
       console.log(service1);
       console.log(provider1);
       console.log(myfactory);

        /*引入外置文件的服务getMessageFactory*/
       console.log(getMessageFactory.getMessage());
    });

</script>
</html>

上面案例引入了一个外部的js,该js专用于定义各种服务

/**
 * Created by Administrator on 2016/3/28.
 */
var service=angular.module(‘myService‘,[]);

service.service(‘getMessageFactory‘,function(){
    var service={};
    service.getMessage=function(){
        return "这是外置文件的js服务";
    }
    return service;
})

service.service(‘getMessageFactory1‘,function(){
    var service={};
    service.getMessage=function(){
        return "这是外置文件的js服务1";
    }
    return service;
})

service.service(‘getMessageFactory2‘,function(){
    var service={};
    service.getMessage=function(){
        return "这是外置文件的js服务2";
    }
    return service;
})

在html中的mudule要记得引入依赖关系,引入依赖之前当然你要确保你的service.js已经引入进页面中来了  

  

时间: 2024-08-10 12:18:37

ionic准备之angular基础———服务provider 和 factory(9)的相关文章

云计算之openstack基础服务之一keystone服务最佳实践

1.openstack简介 Openstack是一个项目,该项目支持所有类型的云环境的一个开源云计算平台,该项目的目的是为了实现简单,大规模可扩展性,以及丰富功能集,来自世界各地的云计算专家项目作出贡献.Openstack提供了一个基础架构即服务(Iaas)并通过各种配套服务的解决方案,每个服务提供一个应用编程接口来完成整个openstack的结合. 架构图如下: 相关服务介绍: 服务名称 项目名称 描述 Dashboard Horizon 基于openstackAPI接口使用Django开发的

AngularJS注册和使用服务和常量(provider、factory、service、constant、value)

1.   简介 AngularJS采用MVC架构,提供了服务的注册和以依赖注入方式使用服务的机制.服务是功能(方法)和数据(常量)的抽象,比如系统中关于用户信息相关的功能(头像.昵称.签名.生日.性别等信息的获取与修改)抽象后集中在一个对象中,那么这个对象就可以视为一个服务.服务可以通过angular.Module(常以var app = angular.module('my-app',[])方式获取)和$provider(以依赖注入方式获取)对象注册,常以依赖注入的方式使用使用. 每个服务有一

基础服务

.net 基础服务开源战略规划备忘录 公司现状 1. 技术人员水平限制: 基础研发人员技术细节,性能处理能力不足,技术视野不够开阔;甚至一些高可用,高性能方案的概念都未听闻,更别提发展方向和思路了,令人痛心. 2. 技术反馈渠道限制: 公司业务线暂不多,基础服务的应用面尚属狭窄:基础服务和镜像各种环境的适应性和性能不足以及时凸显暴露出来,框架bug和问题使用反馈周期太长,不足以快速跟进和改善基础框架. 3. 人员招聘渠道限制: 高技术人才未中长期储备, 各招聘渠道未能招募到合适的技术人员.临时招

计算机网络管理基础服务安装

使用yum方式完成服务安装 ___By Nemo(仅供参考) Notice:Apache 安装好之后,我又改回桥接模式用rpm安装了. 首先,让你的虚拟机上个网,所以需要把网卡设置成nat模式,在宿主机上先拨个号,设好后重启linux系统. 重启后,打开firefox,看是不是能上网.Ok,但nat模式默认的ip是动态分配的,咱们得按照老师的要求把设成你静态的学生牌号.所以咱们得这么设一下!应该通过vmware虚拟机中-->Edit(编 缉)-->Virtual Net Editor(虚拟网络

计算机网络管理基础服务安装+大数据时代的网络运维

使用yum方式完成服务安装 ___By Nemo(仅供参考) Notice:Apache 安装好之后,我又改回桥接模式用rpm安装了. 首先,让你的虚拟机上个网,所以需要把网卡设置成nat模式,在宿主机上先拨个号,设好后重启linux系统. 重启后,打开firefox,看是不是能上网.Ok,但nat模式默认的ip是动态分配的,咱们得按照老师的要求把设成你静态的学生牌号.所以咱们得这么设一下!应该通过vmware虚拟机中-->Edit(编 缉)-->Virtual Net Editor(虚拟网络

开源项目 AllJoyn 基础服务

AllJoyn 基础服务主要包括 Onboarding,Notification 和 Control Panel三个大项. 这三个也是编写App的最基础的,最常用的部分. Onboarding 提供了一种标准的让设备接入WiFi网络的方式. 这里定义了两个角色: Onboarder(登录器):一个运行在智能设备上的App. Onboardee(登陆者):准备添加到网络中的设备. 基本流程 Onboarder 发现设备需要登录到网络中 连接,并提供配置信息 Onboardee验证是否可以登录到网络

angular基础

常用的设计原则和设计模式 1.设计原则(明确)① YANGI(You aren't gonna need it) 不写不需要的代码②KISS(Keep it simple and stupid) 代码越简单越好③DRY(Don't Repeat Yourself)封装代码④高内聚低耦合内聚:一个模块内部的不同部分之间的关系耦合:不同模块/组件的关系⑤SRP(single responsibility principle) 单一责任原则⑥OCP(open closed principle) 开闭原

Asp.net 面向接口可扩展框架之类型转化基础服务

新框架正在逐步完善,可喜可贺的是基础服务部分初具备模样了,给大家分享一下 由于基础服务涉及太广,也没开发完,这篇只介绍其中的类型转化部分,命名为类型转化基础服务,其实就是基础服务模块的类型转化子模块 说到类型转化必须要清楚.net的类型,类型都不清楚何来类型转化 1.Primitive类型 1.1 这个概念估计很多人都没听说过,Primitive不是一个新类型,而是.net类型中最基本的一种分类,是基元类型的意思       MS将类型分为三类:Primitive(基元类型).Complex(复

(C/C++)基于SharpUI控件库的插件式框架开发--第三篇框架基础服务库

一个框架基础的东西,一般也是操作的最基础的类,比如char.int.bool等,有时出现内存泄露的问题导致错误的抛出,但是C++开发有的时候就算是抛出异常,那也是靠经验来积累才能非常快速准确的找出错误所在,这就需要在框架中需要添加日志管理的接口,日志管理的好处就是开发者自身在找异常时提供参考,另一个就是如果用户操作时出现问题,也可将日志反馈,帮助快速解决问题:总之了为了更好的扩展完善我的框架,我详细列一下这个基础服务库(XPCore)包含内容: 虽说sharpui控件库内封闭好string类,但