angularjs中服务的正确写法是?(在AngularJs中父子页面如何相互调用方法和接收值)
本文目录
- 在AngularJs中父子页面如何相互调用方法和接收值
- AngularJs中的模块定义,一个页面加载多个ng-app
- 谁有混淆Angularjs代码的经验
- AngularJS开发中,何时应该使用Directive,Controller,Service
- 怎么在angularjs的config中使用service
- rs-232汇流排在实际应用中有几种接线方式,它们都应用在哪些场合
- angular push写法是啥意思
- 在angular中 function中的$scope和$rootscope有什么区别
- 如何利用AngularJS服务接入外部API
- 怎么理解服务
在AngularJs中父子页面如何相互调用方法和接收值
因为AngularJs用的人不多,我发现网上关于这方面的文章不多,所以我分享一下在AngularJs中是如何调用和接收的。 《app-dialog》《/app-dialog》其中dialog是子页面文件夹的名字,只需要把这个标签放在父页面中需要的地方即可。=’sessionId’,sessionId是父页面中的值,需要传到子页面中去的,父页面中的sessionId是需要定义的,而子页面需要这样来接收父页面中的sessionId, ’#dialogfile’相当于给子页面添加了一个id,在父页面中可以直接通过这个id来接收子页面的值和调用子页面的方法(如果是调用子页面的方法的话,方法名后面是需要加括号的),在父页面中需要这样来定义, 最后是子页面调用父页面的方法。 其中’this’指的就是父页面,而则是需要在子页面定义的一个名字可以随意更改, 记住调用父页面的方法,方法名后面是需要加括号的,如果有参数的话,直接写在括号里面就好。
AngularJs中的模块定义,一个页面加载多个ng-app
基于AngularJS入门与进阶(江荣波 著)这本书的笔记 AngularJS 1.x的demo AngularJS1.x和Angular2,4,5是不一样的两个东西,构建方式,语法,都很多不同 AngularJS框架在window对象下新增了一个全局的angular对象,调用angular对象的module()方法返回一个模块实例。 angular.module()方法能够接收3个参数。第一个参数为模块的名称。第二个参数是一个数组,用于指定该模块依赖的模块名称。如果我们的模块不需要依赖其他模块,第二个参数传递一个空数组即可。第三个参数为可选参数,该参数接收一个方法,用于对模块进行配置,作用和模块实例的config()方法相同。 angular.module()方法返回一个模块实例对象,我们可以调用该对象的controller()、directive()、filter()等方法向模块中添加控制器、指令、过滤器等其他组件。 在实际开发过程中,多个模块组合,肯定会遇到模块命名冲突的情况,我看可以通过定义多个模块来解决。 首先定义一个公共的common.js ,其中定义两个模块,controller 名字相同,都为testClick。 一般angular单个页面只能加载一个ng-app,一个页面会自动加载第一个ng-app,其它ng-app不会被加载。如果想加载多个ng-app就需要使用angular.bootstrap去加载后面的ng-app。 值得注意的是: 1、angular.bootstrap只会绑定第一次加载的对象。 2、后面重复的绑定或者其他对象的绑定,都会在控制台输出错误提示。 3、一个ng-app可以有多个controller。 4、. rootScope 可作用于整个应用中。是各个 controller中scope 的桥梁。用rootscope定义的值,可以在各个controller 中使用。 一个简单的测试页面,可以同时加载两个controller,且不会相互冲突 一个页面只加载一个controller测试 common.js中许要去掉angular.element(document).ready,因为会默认加载第一个
谁有混淆Angularjs代码的经验
由于AngularJS是通过控制器构造函数的参数名字来推断依赖服务名称的。所以如果你要压缩控制器的JS代码,它所有的参数也同时会被压缩,这时候依赖注入系统就不能正确的识别出服务了。假如我们的Controller的名称为:BookCtrl,压缩前的代码为:***隐藏网址***为了克服压缩引起的问题,只要在控制器函数里面给$inject属性赋值一个依赖服务标识符的数组:***隐藏网址***另一种方法也可以用来指定依赖列表并且避免压缩问题——使用Javascript数组方式构造控制器:把要注入的服务放到一个字符串数组(代表依赖的名字)里,数组最后一个元素是控制器的方法函数:***隐藏网址***上面提到的两种方法都能和AngularJS可注入的任何函数完美协作,要选哪一种方式完全取决于你们项目的编程风格,建议使用数组方式
AngularJS开发中,何时应该使用Directive,Controller,Service
AngularJS是一款非常强大的前端MVC框架。同时,它也引入了相当多的概念,这些概念我们可能不是太熟悉。这些概念有: Directive(指令) Controller(控制器) Service (服务) 下面我们逐个来看这些概念,研究一下为什么它们会像当初设计的那样强大,同时研究一下为什么我们要以那样的方式去使用它们。我们从Service开始。 SERVICES(服务) 如果你已经使用过AngularJS,你可能已经遇到过Service这个概念了,简而言之,Service就是【单例对象】在AngluarJS 中的一个别名。这些小东西(指单例对象)会被经常传来传去,保证你每次访问到的都是同一个实例,这一点和工厂模式不同。基于这种思想,单例对象让我们可以 实现一些相当酷的功能,它可以让很多controller和directive访问内部的数值。在#angularjs 频道(译者注:指的是原作者自己的博客频道)里面这也是非常常见的问题之一,那就是在应用中的不同代码块之间如何共享数据?我们来看这个问题。 我们首先来创建一个module(模块),本文中的所有代码都会用到这个module。 var module = angular.module( "my.new.module", ); 下一步,我们来创建一个新的service(服务)。假设我们上面的这个module是用来管理图书的。所以,这里我们来创建一个Book service,然后把一个JSON对象数组添加到这个serice中,这些对象代表很多book数据。 module.service( ’Book’, ; module.controller( "books.list", ctrl ); 同样非常简单。我们上面所做的就是为我们的module创建了一个新的controller。在创建的时候把$scope provdier和我们自己的Book service传递给了它。能明白我们在干嘛吗?我们把前面创建的Book service中的books数组赋给了controller内部的局部scope对象。很酷,对吧? 好,这里的核心问题是什么呢?我们节省了一些时间,并且在controller上创建了一个数组。对---我们确实这样做了。这样做确实也为我们节 约了一点时间---但是如果我们要在其它地方处理这些书籍信息应该怎么办呢?通过scope来维护数据是非常粗暴的一种方式。由于其它 controller、directive、model的影响,scope很容易就会崩溃或者变脏。它很快就会变成一团乱麻。通过一种集中的途径(在这里 就是service)来管理所有书籍数据,然后通过某种方式来请求修改它,这样不仅仅会更加清晰---同时当应用的体积不断增大的时候也更加容易管理。最 后,它还可以让你的代码保持模块化(这也是Angular很擅长的一件事情)。一旦你在其它项目中需要用到这个service,你没有必要在scope、 controller、filter等等东西里面到处去查找相关的代码,因为所有东西都在service里面! 好。那么我们什么时候应该使用service呢?答案是:无论何时,当我们需要在不同的域中共享数据的时候。另外,多亏了Angular的依赖注入系统,实现这一点是很容易并且很清晰的。
怎么在angularjs的config中使用service
Angular中有几种不同类型的services。每一种都有自己的独特用法。需要记住的非常重要的一点是service总是一个单体,无论是哪种类型的service。注释:单体是一种设计模式,它限制了每一个类仅能够实例化为一个对象。无论我们在什么地方注入我们的service,将永远使用同一个实例。例子:app.constant(’fooConfig’,{ config1: true, config2: "Default config2" }); Constant是一个非常有用的service,它经常被用来在指令中提供默认配置。因此如果你正在创建一个指令,并且你想要在给指令传递可选参数的同时进行一个默认配置,一个Constant就是一个好办法。作为一个constant,我们放入其中的值将不会改变。Contant service 基本上回事一个基本类型的值或者是一个对象。例子:app.value(’fooConfig’,{ config1: true, config2: "Default config2 but it can change" }); 一个value service有点像是一个constant但是它是可以被改变的。它也经常被用在一个指令上面,来进行配置。一个value service有点像是一个factory service的缩小版,它经常用来保存值但是我们不能在其中对值进行计算。我们可以使用angular对象的extend方法来改变一个value service:app = angular.module("app", );app.controller(’MainCtrl’, function($scope, fooConfig) { $scope.fooConfig = fooConfig; angular.extend(fooConfig, {config3: "I have been extended"});});app.value(’fooConfig’, { config1: true, config2: "Default config2 but it can changes" }); 例子:app.factory(’foo’, function() { var thisIsPrivate = "Private"; function getPrivate() { return thisIsPrivate; } return { variable: "This is public", getPrivate: getPrivate };});// or..app.factory(’bar’, function(a) { return a * 2;}); Factory service是最普遍使用的service。它同样也非常容易理解。一个Factory是一个能够返回任何数据类型的service。对于你如何创建它并没有什么可选项,你仅仅需要在其中返回一些东西即可。正如前面所说的,所有的service类型都是单体,因此如果我们在一个地方修改了foo.variable,其他的地方也会相应的发生改变。例子:app.service(’foo’, function() { var thisIsPrivate = "Private"; this.variable = "This is public"; this.getPrivate = function() { return thisIsPrivate; };}); Service service 和factory差不多。它们之间的区别在于service会接收一个构造器,因此当你第一次使用它的时候,它将会自动运行newFoo()来实例化一个对象。一定要记住如果你在其他的地方也使用了这个service,它将返回同一个对象。事实上,上面的代码和下面的代码等价:app.factory(’foo2’, function() { return new Foobar();}); function Foobar() { var thisIsPrivate = "Private"; this.variable = "This is public"; this.getPrivate = function() { return thisIsPrivate; };} Foobar是一个类,我们在首次使用它的时候在我们的factory中将它实例化然后将它返回。和service一样,Foobar将只会实例化一次然后下次当我们再次使用factory时它将返回同一个实例。如果我们已经有了一个类,并且我们想将它用在service中,我们只需要编写如下的代码:app.service(’foo3’,Foobar); Provider是factory的加强版。事实上,上一个例子中的factory代码等价于下面的provider代码:app.provider(’foo’, function() { return { $get: function() { var thisIsPrivate = "Private"; function getPrivate() { return thisIsPrivate; } return { variable: "This is public", getPrivate: getPrivate }; } };}); 一个provider中应当由一个$get函数,其中的内容就是我们想要注入我们应用中的部分,因此当我们将foo注入一个控制器时,我们实际上注入的是$get函数。既然factory如此简单,那我们为什么还要使用provider呢?因为我们可以在config阶段配置一个provider。因此我们可以编写下面的代码:app.provider(’foo’, function() { var thisIsPrivate = "Private"; return { setPrivate: function(newVal) { thisIsPrivate = newVal; }, $get: function() { function getPrivate() { return thisIsPrivate; } return { variable: "This is public", getPrivate: getPrivate }; } };});app.config(function(fooProvider) { fooProvider.setPrivate(’New value from config’);}); 在这里我们将thisIsPrivate移到了我们的$get函数的外面,然后我们创建了一个setPrivate来在一个config函数中修改thisIsPrivate。为什么我们需要这样做?这难道不比在factory中添加setter要容易吗?除此之外,还有另外一个原因。我们想要注入一个特定的对象但是我们想要提供一种方式来根据我们的需求进行一些配置。例如:一个service包含了一个使用jsonp的资源,我们想要配置具体使用的URL,或者我们想要使用一个第三方的service比如restangular来允许我们根据我们的需求来进行配置。要注意到我们在config函数中放入的是nameProvider而不是name。在这里,我们实际上还是对name进行配置。看到这里我们其实已经意识到了我们已经在应用中进行过一些配置了,像是$routeProvider以及$locationProvider,两者分别用来配置我们的路由了html5模式。那么现在已经决定要使用前面的 foo service,但是其中还是缺少一个你想要的greet函数。你可以修改factory吗?答案是不行!但是你可以装饰它:app.config(function($provide){ $provide.decorator(’foo’,function($delegate){ $delegate.greet = function(){ return "Hello, I am a new function of ’foo’"; } });}); $provide是Angular用来在内部创建我们的service的东西。如果我们想要使用它的话可以手动来使用它或者仅仅使用在我们的模块中提供的函数(我们需要使用$provide来进行装饰)。$provide有一个函数,decorator,它让我们可以装饰我们的service。它接收我们想要装饰的service的名字并且在回调函数中接收一个$delegate来代表我们实际上的service实例。在这里我们可以做一切我们想要的事情来装饰我们的service。在上面的例子中,我们为我们原来的service添加了一个greet函数。接着我们返回了修改后的service。经过修改以后,现在我们的factory中已经有了一个叫做greet的函数。装饰一个service的能力是非常实用的,尤其是当我们想要使用第三方的service时,此时我们不需要将代码复制到我们的项目中,而只需要进行一些修改即可。注意:constant service不能被装饰。我们的services都是单体但是我们可以创建一个单体factory来创建新的实例。在你深入之前,记住Angular中的服务都是单体并且我们不想改变这一点。但是,在极少数的情况下你需要生成一个新的实例,你可以像下面这样做:function Person(json){ angular.extend(this,json);}Person.prototype = { update: function(){ this.name = "Dave"; this.country = "Canada"; }}; Person.getById = function(id){ return new Person({ name: "Jesus", country: "Spain" });};app.factory(’personService’,function(){ return { getById: Person.getById };}); 在这里我们创建了一个Person对象,它接收一些json数据来初始化对象。然后我们在我们的原型(原型中的函数可以被Person的实例所用)中创建了一个函数,并且在Person上直接创建了一个函数(就像是类函数一样)。因此现在我们拥有了一个类函数,它将基于我们提供的id来创建一个新的Person对象,并且每一个对象都可以自我更新。现在我们仅仅需要创建一个能够使用它的service。当每次我们调用personService.getById时,我们都在创建一个新的Person对象,因此你可以在不同的控制器中使用这个service,即便当factory是一个单体,它也能生成新的对象。Service是Angular中最酷的特性之一。我们可以使用很多方法来创造它们,我们仅仅需要找到符合我们需求的方法然后实现它。
rs-232汇流排在实际应用中有几种接线方式,它们都应用在哪些场合
rs-232汇流排在实际应用中有几种接线方式,它们都应用在哪些场合
rs-232汇流排? 一般说 rs-485汇流排 232是一拖一的,485可以一拖多 一、什么是RS-232 介面? (1) RS-232 的历史和作用 在序列通讯时,要求通讯双方都采用一个标准介面,使不同的装置可以方便地连线起来进行 通讯。RS-232-C介面(又称EIA RS-232-C)是目前最常用的一种序列通讯介面。 (“RS-232-C”中的“-C”只不过表示RS-232的版本,所以与“RS-232”简称是一样的)它 是在1970 年由美国电子工业协会(EIA)联合贝尔系统、调变解调器厂家及计算机终端生产 厂家共同制定的用于序列通讯的标准。它的全名是"资料终端装置(DTE)和资料通讯装置 (DCE)之间序列二进位制资料交换介面技术标准"该标准规定采用一个25 个脚的DB-25 连线 器,对联结器的每个引脚的讯号内容加以规定,还对各种讯号的电平加以规定。后来IBM 的PC 机将RS-232 简化.
在实际水处理应用中,气浮工艺一般应用在哪些场合
气浮工艺一般都应用到水的除铁锰工艺系统装置中,至于"场合"呵呵!什么场合都可采用到,只是环境问题而已…。一杰水质
PLC都应用在哪些场合
用在 煤矿 船舶 机械制造和非标机械制造 物流 等等很多都可以用的到
GPRS DTU在实际应用中有几种与中心通讯连线方式?功耗大概是多少?
中心端如果具备公网IP 则直接由GPRS DTU发起访问连线 中心端如果也是采用无线方式上网 则一般需要申请APN专网 用过厦门才茂的GPRS DTU 楼主可以一试
AngularJS 在实际应用中有哪些优缺点
优点:资料双向系结;使专案结构更加清晰,view,controller,service,model等的细化便于多人协作开发;针对service的单元测试更加简单; 缺点:对于新手(特别是对mvc或者javascript不熟悉的)较难上手;严格的angularjs写法要求对dom的操作都封装在directive,在实际应用中如果某个模组有比较频繁复杂的dom操作,难以实现;
AngularJS 在实际应用中优缺点很多,具体如下: 优点: 1. 模板功能强大丰富,并且是宣告式的,自带了丰富的Angular指令; 2. 是一个比较完善的前端MV*框架,包含模板,资料双向系结,路由,模组化,服务,过滤器,依赖注入等所有功能; 3. 自定义Directive,比jQuery外挂还灵活,但是需要深入了解Directive的一些特性,简单的封装容易,复杂一点官方没有提供详细的介绍文件,我们可以通过阅读原始码来找到某些我们需要的东西,如:在directive使用 $parse; 4. ng模组化比较大胆的引入了Java的一些东西(依赖注入),能够很容易的写出可复用的程式码,对于敏捷开发的团队来说非常有帮助,我们的专案从上线到目前,UI变化很大,在摸索中迭代产品,但是js的程式码基本上很少改动。 5. 补充:Angular支援单元测试和e2e-testing。 缺点: 1. 验证功能错误资讯显示比较薄弱,需要写很多模板标签,没有jQuery Validate方便,所以我们自己封装了验证的错误资讯提示; 2. ngView只能有一个,不能巢状多个检视,虽然有解决,但是貌似ui-router 对于URL的控制不是很灵活,必须是巢状式的(也许我没有深入了解或者新版本有改进); 3. 对于特别复杂的应用场景,貌似效能有点问题,特别是在Windows下使用chrome浏览器,不知道是记忆体泄漏了还是什么其他问题,没有找到好的解决方案,奇怪的是在IE10下反而很快,对此还在观察中; 4. 这次从1.0.X升级到1.2.X,貌似有比较大的调整,没有完美相容低版本,升级之后可能会导致一个相容性的BUG,具体详细资讯参考官方文件 AngularJS ,对应的中文版本:Angular 1.0到1.2 迁移指南 5. ng提倡在控制器里面不要有操作DOM的程式码,对于一些jQuery 外挂的使用,如果想不破坏程式码的整洁性,需要写一些directive去封装外挂,但是现在有很多外挂的版本已经支援Angular了,如:jQuery File Upload Demo 6. Angular 太笨重了,没有让使用者选择一个轻量级的版本,当然1.2.X后,Angular也在做一些更改,比如把route,animate等模组独立出去,让使用者自己去选择。
angular是个比较好的框架,说缺点的话。 不适合型别开发: 1:内容网站,需要SEO的。(SEO目前也有了prerender解决方案) prerender.io 2:互动频繁的,如游戏之类互动体验网站。 3,太过于简单的页面。
AngularJS是为了克服HTML在构建应用上的不足而设计的。HTML是一门很好的为静态文字展示设计的宣告式语言,但要构建WEB应用的话它就显得乏力了。所以我做了一些工作(你也可以觉得是小花招)来让浏览器做我想要的事。 通常,我们是通过以下技术来解决静态网页技术在构建动态应用上的不足: 类库 - 类库是一些函式的集合,它能帮助你写WEB应用。起主导作用的是你的程式码,由你来决定何时使用类库。类库有:jQuery等 框架 - 框架是一种特殊的、已经实现了的WEB应用,你只需要对它填充具体的业务逻辑。这里框架是起主导作用的,由它来根据具体的应用逻辑来呼叫你的程式码。框架有:knockout、sproutcore等。 AngularJS使用了不同的方法,它尝试去补足HTML本身在构建应用方面的缺陷。AngularJS通过使用我们称为识别符号(directives)的结构,让浏览器能够识别新的语法
在angularjs的config中使用service的方法: 它是一个可注入的构造器,在AngularJS中它是单例的,用它在Controller中通讯或者共享资料都很合适 var app = angular.module(’app’ ,); app.config(function ($provide) { $provide.service(’movie’, function () { this.title = ’The Matrix’; }); }); app.controller(’ctrl’, function (movie) { expect(movie.title).toEqual(’The Matrix’); }); 语法糖: app.service(’movie’, function () { this.title = ’The Matrix’; }); 在service里面可以不用返回东西,因为AngularJS会呼叫new关键字来建立物件。但是返回一个自定义物件好像也不会出错。
angular push写法是啥意思
在angularjs的config中使用service的方法:它是一个可注入的构造器,在AngularJS中它是单例的,用它在Controller中通信或者共享数据都很合适var app = angular.module(’app’ ,);app.config(function ($provide) {$provide.service(’movie’, function () {this.title = ’The Matrix’;});});app.controller(’ctrl’, function (movie) {expect(movie.title).toEqual(’The Matrix’);});语法糖:app.service(’movie’, function () {this.title = ’The Matrix’;});在service里面可以不用返回东西,因为AngularJS会调用new关键字来创建对象。但是返回一个自定义对象好像也不会出错。
在angular中 function中的$scope和$rootscope有什么区别
scope是angularJS中的作用域(其实就是存储数据的地方),很类似javascript的原型链 。搜索的时候,优先找自己的scope,如果没有找到就沿着作用域链向上搜索,直至到达根作用域rootScope。 $rootScope是由angularJS加载模块的时候自动创建的,每个模块只会有1个rootScope。rootScope创建好会以服务的形式加入到 $injector中。也就是说通过 $injector.get("$ rootScope ");能够获取到某个模块的根作用域。更准确的来说,$rootScope是由angularJS的核心模块ng创建的。 scope是html和单个controller之间的桥梁,数据绑定就靠他了。rootscope是各个controller中scope的桥梁。用rootscope定义的值,可以在各个controller中使用1 1 1 1234567891011121314151617示例1: // 新建一个模块var module = angular.module("app",); // true说明$rootScope确实以服务的形式包含在模块的injector中var hasNgInjector = angular.injector(); console.log("has $rootScope=" + hasNgInjector.has("$rootScope"));//true // 获取模块相应的injector对象,不获取ng模块中的服务// 不依赖于ng模块,无法获取$rootScope服务var noNgInjector = angular.injector();console.log("no $rootScope=" + noNgInjector.has("$rootScope"));//false // 获取angular核心的ng模块var ngInjector = angular.injector(); console.log("ng $rootScope=" + ngInjector.has("$rootScope"));//true12上面的代码的确可以说明: $rootScope的确是由核心模块ng创建的,并以服务的形式存在于injector中 。如果创建injector的时候,指定了ng模块,那么该injector中就会包含$rootScope服务;否则就不包含$rootScope。12345678910111213141516171819202122232425262728293031323334示例2:《!doctype html》《html lang="en"》 《head》 《meta charset="utf-8"》 《script src="angular-1.2.25.js"》《/script》 《script》 var module = angular.module("app",); var rootScope = myInjector.get("$rootScope"); alert(rootScope.name);//udefined 《/script》 《/head》 《body ng-app="app"》 《div id="first" ng-controller="FirstController"》 《input type="text" ng-model="name"》 {{name}} 《/div》 《/body》 《/html》angular.injector()可以调用多次,每次都返回新建的injector对象 。所以我们自己创建的myInjector和angular自动创建的$injector不是同一个对象,那么得到的rootScope也就不是同一个。12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788示例3:《!doctype html》《html lang="en"》 《head》 《script src="angular-1.2.25.js"》《/script》 《script》 function FirstController($scope,$injector,$rootScope) { // true console.log("scope parent :" + ($scope.$parent ==$rootScope)); } 《/script》 《/head》 《body ng-app》 《div id="first" ng-controller="FirstController"》 《input type="text" ng-model="name"》 {{name}} 《/div》 《/body》 《/html》ng-controller指令给所在的DOM元素创建了一个新的$scope对象,并作为rootScope的子作用域 。$scope是由$rootScope创建的,$scope不会保护在$injector中。示例4:《!doctype html》《html lang="en"》 《head》 《meta charset="utf-8"》 《title》scope()《/title》 《script src="jquery-1.11.1.js"》《/script》 《script src="angular-1.2.25.js"》《/script》 《script》 //记住rootScope,用来判断跨控制器是否相等 var first_rootScope = null; //记住scope,用来判断跨控制器是否相等 var first_scope = null; //记住injector,用来判断跨控制器是否相等 var first_injectot = null; // 第1个angular控制器 function FirstController($scope,$injector,$rootScope) { $rootScope.name = "aty"; first_rootScope = $rootScope; first_injectot = $injector; first_scope = $scope; } // 第2个angular控制器,主要是来测试跨controller时injector和scope的表现 function SecondController($scope,$injector,$rootScope) { console.log("first_rootScope==second_rootScope:" + (first_rootScope==$rootScope));//true console.log("first_injectot==second_injector:" + (first_injectot==$injector));//true console.log("first_scope==second_scope:" + (first_scope==$scope));//false } 《/script》 《/head》 《body ng-app》 《div id="first" ng-controller="FirstController"》 《input type="text" ng-model="name"》 《div id="tips"》《/div》 《/div》 《h3》outside of controller《/h3》 《!--访问每一个应用(模块)的rootScope--》 {{$root.name}} 《div id="noControllerDiv"/》 《div ng-controller="SecondController"》 《/div》 《/body》 《/html》1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071ng-app定义了一个angular模块, 每个模块只有一个$rootScope,只有一个$injector,但可以有多个$scope 。 弄清了 $injector、$rootScope和$scope这3者之间的关系,我们看下angular提供的2个API,一个是scope(),一个是injector()。使用 angular.element()返回的DOM对象,都会包含这2个方法,用来获取与之关联的scope和injector。由于每个模块的injector是唯一的,所以 angular.element().injector()直接返回元素所在模块的injector 。angular.element().scope()可以获取到当前元素的scope或父scope。如果当前元素有scope,则返回自己的scope;如果没有则向父亲方向寻找,如果找不到返回rootScope。即 返回作用域链上,距离该元素最近的scope 。 《!doctype html》《html lang="en"》 《head》 《meta charset="utf-8"》 《title》scope()《/title》 《script src="jquery-1.11.1.js"》《/script》 《script src="angular-1.2.25.js"》《/script》 《script》 function FirstController($scope,$injector,$rootScope) { //获取body对象 var domBody = document.getElementsByTagName(’body’); // 通过ng-app指令所在的DOM元素获取rootScope var rtScope = angular.element(domBody).scope(); //当前元素没有新作用域,获取父作用域即rootScope var noScope = angular.element("#noControllerDiv").scope(); // true console.log("rtScope==noScope:" + (rtScope==noScope)); //ng-controller所在的元素,返回的scope var scopeOnController = angular.element("#first").scope(); // ng-controller内部的元素返回所在的scope var inController = angular.element("#tips").scope(); //true console.log("scopeOnController==inController:" + (scopeOnController==inController)); //验证通过DOM获取的scope是否与注入的$scope和$rootScope一致 //true console.log("result1:" + (rtScope==$rootScope)); //true console.log("result2:" + (inController==$scope)); } 《/script》 《/head》 《body ng-app》 《div id="first" ng-controller="FirstController"》 《input type="text" ng-model="name"》 《div id="tips"》《/div》 《/div》 《h3》outside of controller《/h3》 《!--访问每一个应用(模块)的rootScope--》 {{$root.name}} 《div id="noControllerDiv"/》 《/body》 《/html》
如何利用AngularJS服务接入外部API
第一步:准备工作 将AngularJS脚本添加到该文档的当中: 在此之后,可以在将这套CCS样式添加到行内或者独立的文件当中: *{ -webkit-box-sizing:border-box; -moz-box-sizing:border-box; box-sizing:border-box; font-family:sans-serif; } body,html{margin:0;} p{margin:0;} input{width:100%;} pre{ white-space:pre-wrap; white-space:-moz-pre-wrap; white-space:-pre-wrap; white-space:-o-pre-wrap; word-wrap:break-word; } div.repo{ border-bottom:1pxsolid; cursor:pointer; } #search,#repo,#user{float:left;} #search{width:20%;} #repo{width:60%;} #user{width:20%;} 如大家所见,其中不存在任何多余的内容、只保留最基础的布局方案——将搜索栏置于右侧、库信息位于中央、用户库同样置于右侧。我们还需要将对应代码行打包至标签当中,此后我们还要利用它显示README文件内容——因为这些内容通常来自GitHub Flavored Markdown、而且其中一部分代码行与用户库列表存在重叠。 当然,大家可以向其中添加更多样式以提升成果的视觉效果——但请注意,本教程中的截图都采取最基本的外观设计。 大家可以未来需要编写的JavaScript代码置于本文档的当中或者为其建立独立文件,但独立文件仍然需要处于AngularJS脚本之下。 第二步:模块 现在我们可以为自己的应用程序创建一个模块: varapp=angular.module(’githubsearch’,); 接下来利用ngApp指令将其添加到标签当中: 第三步:控制器 我们还需要为自己的应用程序准备一套控制器。为了简化创建流程,我们将只为应用准备一套控制器,这样我们就不必考虑如何在不同控制器之间进行信息传递了: app.controller(’SearchController’,functionSearchController($scope){ }); 第四步:基础服务 我们需要对自己的GitHub服务进行定义:***隐藏网址*** return{ }; });***隐藏网址*** 第五步:搜索库 我们服务中的第一项方法负责利用GitHub API对库进行搜索。使用服务非常简单(这项函数能够进入由制造函数返回的对象): searchRepos:functionsearchRepos(query,callback){***隐藏网址*** .success(function(data){ callback(null,data); }) .error(function(e){ callback(e); }); }***隐藏网址******隐藏网址*** 第六步:搜索栏 为了使用我们在之前几步中定义完成的函数,我们需要在自己的HTML当中添加搜索栏。
怎么理解服务
怎么理解服务
服务是指为他人做事,并使他人从中受益的一种有偿或无偿的活动。不以实物形式而一提供活劳动的形式满足他人某种特殊需要 1人的生命是有限的,可是,为人民服务是无限的,我要把有限的生命,投入到无限的为人民服务之中去。------雷锋 2我的人生哲学是工作,我要揭示大自然的奥秘,并以此为人类服务。我们在世的短暂的一生中,我不知道还有什么比这种服务更好的了。------爱迪生 3科学决不是一种自私自利的享乐。有幸能够致力于科学研究的人,首先应该拿自己的学识为人类服务。 ------马克思
怎么理解angularjs中的服务
AngularJS中的服务其实就是提供一种方式抽取共用类库 比如说一些工具类方法,我们传统的做法就是自己写个 utility 类,把相关的工具方法填充到utility里面去,最后把utility类放到一个全域性的变数中,这样任何地方都可以呼叫utility的方法。 如果用AngularJS的service,你按照他的规则建立一个 utility 服务,然后在任何地方都可以通过依赖注入呼叫utility里面的方法。 Angular的建立服务的方式有三种:providers,factory,service,关于区别可以看:AngularJS中provider、factory、service的区别
怎么理解酒店快捷服务
快捷服务是酒店服务产品的基本要求之一,顾名思义,就是又快又准确的服务,它是从服务的有效性和效率方面来说的。我们知道,等待往往是件很烦恼的事情,特别是你还有更重要的事情等你去做的时候。国内最具快捷服务特色的酒店代表如如家快捷酒店,客人在登记、结账等服务时都有严格的时间标准规定。服务员必须熟练地操作,才能达到快捷服务的规定要求。快捷服务是优质服务的内容之一。
施工交钥匙服务怎么理解
1、施工交钥匙服务是指施工采购总承包的服务。这只是交钥匙工程中的一种。 2、专案工程的施工完成、验收合格,里面的装置、机械装置都已经通过验收并验收合格了。业主或是甲方只要拿着钥匙进去就可以了,里面全部好了,全部按照甲方或业主的意图施工完成的。业主很满意的。简称“交钥匙工程”。
webservice 服务端和客户端怎么理解!
举个例子:你写个加法的演算法,让服务端呼叫,服务端算好之后,传给你,你就知道结果了。 一个是接受一个是被接受。
怎样理解饭店服务中的微笑服务
在服务行业中,,它首先能够体现你是友好的;其次,它能体现你是愿意为顾客服务的;它可以体现顾客至上,,但是其次你一定要熟悉你的业务,这样才能让客人满意.
什么是淘宝卖家服务亲,怎么理解淘宝卖家服务
淘宝卖家服务是指:买家在售前的咨询和售后的处理,比如发货速度,卖家的服务态度,宝贝描述等,是一站式的卖家服务体验。 淘宝卖家服务理解:作为一站式的卖家服务体验,淘宝资料软体通过向服务商提供的开放介面合作定制开发的,为淘宝卖家提升运营效率、降低销售成本和帮助经营决策的资料类线上软体产品应用。同样的,淘宝营销工具也通过向服务商提供的开放介面和模组工具包,合作定制开发的帮助淘宝卖家提高店铺流量、购买转化率和客单价的营销类线上软体产品应用。
更多文章:
sublime官方网站(sublime text3的用户设置)
2024年7月2日 16:48
aspnet期末考试题(哪位小仙女小仙男有《高级程序设计语言c#》期末复习资料啊,跪求(ω))
2024年7月4日 10:38
前端图片居中怎么设置(web前端,一张图片的实际尺寸为1334×662,屏幕分辨率比这张图片还高,前端如何设计铺满整个屏幕的)
2024年7月13日 00:28
hashcode(Java源码hashmap,当key的hashcode相同的时候,为什么会把value加到链表里)
2024年6月14日 13:42
dosbox汇编使用教程(怎么用dosbox编译,连接,执行汇编语言)
2024年10月7日 12:30
安卓开发为什么不火了(安卓是不是不行了听说现在安卓要淘汰了,要被微软打下去了是不是真的啊安卓怎么才火了这么点时间)
2024年8月11日 12:57
access数据库下载好了找不到(为什么打开ACCESS软件后出现“找不到指定的数据库”)
2024年6月26日 22:28
matlab算复杂方程组(matlab计算含有三角函数的复杂方程组计算不出来)
2024年7月10日 20:38
compile中文是什么意思(英语Compiled怎么翻译)
2024年6月4日 20:49