anjular中Service、Factory、Provider的使用与js中创建对象的总结
在学习anjular中Service的使用时,发现和js中的创建对象的方式有一定的联系,所以总结了anjular中Service、Factory、Provider的使用方式与js创建对象的方式
一、先总结下js中创建对象的几种方式
function createObject(username, password) {
var object = new Object(); //等价于 var object={};
object.username = username; object.password = password;
object.get=function(){
alert(this.username); //等价于alert(a.username)
}
return object;
}
var object = createObject("zhangsan", "123"); //此方法没有用new相 当于直接调用函数
object.get(); //zhangsan
function Person(username, password) {
//在执行第一行代码前,js引擎会为我们生成一个对象
this.username =username; this.password = password;
this.getInfo = function() {
alert(this.username);
}
//此处有一个隐藏的return语句,用于将之前生成的对象返回
//只有在后面用new的情况下,才会出现注释所述的这两点情况
}
var person = new Person("zhangsan", "123");//用了new才能得到一个对象,否则person的值会为undefuned
person.getInfo(); //zhangsan
function Person(username,password) {
this.username = username;
this.password = password;
}
Person.prototype.getInfo = function() {
alert(this.username);
}
var p = new Person("lisi","123456"); //此方式包含了构造函数方式,所以创建对象需要使用new
p.getInfo();

var myApp = angular.module("myApp",[]);
myApp.service("myService",function(){
var data1="data1";
this.data2="data2";
this.getData1=function(){
return data1;
};
});
myApp.controller("myCtr1",["$scope","myService",function($scope,myService){
$scope.getWay1=function(){
console.log( myService.getData1() );
};
$scope.getWay2=function(){
console.log( myService.data2 );
};
}]); <div ng-controller="myCtr1">
<button ng-click="getWay1()"></button> //data1
<button ng-click="getWay2()"></button> //data2
</div>
var app = angular.module('myApp', []);
app.factory('myFactory', function() {
console.log('instance myFactory');
var factory = {};
var data1= "data1";
factory.data2 = "data2";
factory.getData1 = function() {
return data1;
};
return factory;
}); app.controller('myCtrl',["$scope","myFactory",function(){
$scope.getWay1 = function() {
alert(myFactory.getData1());
};
$scope.getWay2= function() {
alert(myFactory.data2);
};
}]); <div ng-controller="myCtrl">
<button ng-click="getWay1()">按钮一</button> //data1
<button ng-click="getWay2()">按钮二</button> //data2
</div>
app.factory('myFactory', function() {
return {
getWay1:functory(){
},
getWay2:functory(){
}
}
});
var app = angular.module('myApp', []);
app.provider('testProvider', function(){
console.log('instance testProvider');
var f = function(name) {
alert("Hello, " + name);
};
this.$get = function(){
return f;
};
}); app.controller('myCtrl1', function($scope, testProvider) {
$scope.onclick1 = function() {
testProvider("十盏");
};
});
app.controller('myCtrl2', function($scope , testProvider) {
$scope.onclick2 = function() {
testProvider("provider: 十盏");
};
}); <div ng-controller="myCtrl1">
<button ng-click = "onclick1()">请点击我1</button> //十盏
</div>
<div ng-controller="myCtrl2">
<button ng-click = "onclick2()">请点击我2</button>
//provider: 十盏
</div>
var app = angular.module('app', []);
app.provider('movie', function () {
var version;
return {
setVersion: function (value) {
version = value;
},
$get: function () {
return {
title: 'The Matrix' + ' ' + version
}
}
}
}); app.config(function (movieProvider) { //在config阶段定义的服务的名字+Provider
movieProvider.setVersion('Reloaded');
});
app.controller('ctrl', function (movie) {
expect(movie.title).toEqual('The Matrix Reloaded');
});
anjular中Service、Factory、Provider的使用与js中创建对象的总结的更多相关文章
- angularjs---服务(service / factory / provider)
初angularJs时 常写一些不够优雅的代码 !我总结了一下看看各位有没有中枪的!-----( 这里只针对服务service及其相关! ) 以下做法不太优雅 兄弟controller 之间的相同 ...
- json--pyton中obj与json的互转,js中obj与json的互转
json 解释:json是一种跨平台的通用的数据格式 python中对象(obj)与json之间的相互转换 1.对象(obj)转json格式的字符串 json.dumps(res) res = () ...
- angular 服务 service factory provider constant value
angular服务 服务是对公共代码的抽象,由于依赖注入的要求,服务都是单例的,这样我们才能到处注入它们,而不用去管理它们的生命周期. angular的服务有以下几种类型: 常量(Constant): ...
- asp.net后台cs中的JSON格式变量在前台Js中调用方法(前后台示例代码)
//后台cs代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using ...
- asp.net后台cs中的JSON格式变量在前台Js中调用方法
//后台cs代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using ...
- js中的逻辑与(&&)和逻辑或(||)
之前有一个同事去面试,面试过程中碰到这样一个问题: 在js中写出如下的答案 : var a = 2; var b = 3; var andflag = a && b ; var orf ...
- 在JS中关于堆与栈的认识function abc(a){ a=100; } function abc2(arr){ arr[0]=0; }
平常我们的印象中堆与栈就是两种数据结构,栈就是先进后出:堆就是先进先出.下面我就常见的例子做分析: main.cpp int a = 0; 全局初始化区 char *p1; 全局未初始化区 main( ...
- 拾取模型的原理及其在THREE.JS中的代码实现
1. Three.js中的拾取 1.1. 从模型转到屏幕上的过程说开 由于图形显示的基本单位是三角形,那就先从一个三角形从世界坐标转到屏幕坐标说起,例如三角形abc 乘以模型视图矩阵就进入了视点坐标 ...
- js中常用的操作
1.js中常用的数组操作 2.js中常用的字符串操作 3.js中常用的时间日期操作 4.定时器
随机推荐
- iwebshop两表联查
$tb_goods = new IQuery('goods as g'); $tb_goods->join='left join miao as m on m.goods_id=g.id'; $ ...
- sub,dl,dt,排版,横向滚动条,浮动元素居中,box-sizing
1.sub标签 下标 2.dl,dt,dd用的地方通常是具有标题,而标题下对应有若干列表简单的(栏目标题+对应标题列表)和标题对应下面有内容.在使用时候我们能简洁html代码情况下,学会灵活使用dl ...
- 庆祝POPTEST签约企业培训
庆祝POPTEST签约企业培训 POPTEST与众多培训企业进行技术PK,由于企业认可POPTEST的技术实力,从众多竞争对手中脱颖而出,成功中标清华控股子公司性能测试培训.
- 老李推荐:第6章1节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览 2
事件要到那里去? 每个事件源处理类都维护着一个自己的事件队列, 在Monkey中叫做CommandQueue,里面装的是每个具体的MonkeyEvent事件.当来自网络的字串命令被翻译成对应的Monk ...
- BootstrapBootbox居中
/* 模态框居中样式 */ .bootbox-container { position: fixed; ; ; ; ; ; overflow-y: auto; } .bootbox-container ...
- UWP: 掌握编译型绑定 x:Bind
在 UWP 开发中,我们在进行数据绑定时,除了可以使用传统的绑定 Binding,也可以使用全新的 x:Bind,由于后者是在程序编译时进行初始化操作(不同于 Binding,它是在运行时创建.初始化 ...
- Myeclipse快捷键以及使用技巧大全-来自网络
1. 打开MyEclipse 6.0.1,然后"window"→"Preferences" 2. 选择"java",展开,"Edi ...
- ubuntu12.04 desktop默认无ssh支持
sudo apt-get install ssh 安装下即可.
- 关于block使用的几点注意事项
1.在使用block前需要对block指针做判空处理. 不判空直接使用,一旦指针为空直接产生崩溃. if (!self.isOnlyNet) { if (succBlock == NULL) { // ...
- NodeJs之http
创建新的服务器 创建一个简单的服务 var http = require("http"); var server = http.createServer(); server.lis ...