成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

angular.js - angular跨文件注入服務

瀏覽:276日期:2024-10-09 10:08:54

問題描述

假設在 a.js 定義了 service A,b.js 定義了一個 controller B,如何在B中注入服務A

問題解答

回答1:

angular跨文件注入服務?看你這個問題,我覺得題主是概念不清楚,應該明白以下基本概念。1. 你所寫的angular代碼的組織結構不是以文件來劃分的。2. angular已經抽象成了controller,service,directive等組件。這些東西你可以分成多個文件寫,也可以全寫在一個文件中,想讓你的代碼生效,只要在html中加載。為了程序可讀性好,我們一般規定一個組件定義時單獨放一個文件,并遵循良好的目錄結構。3. 代碼劃分是靠模塊來做的。比如你用bower安裝了某個包,你需要在定義你的module時,寫入依賴模塊,那么這個被依賴模塊中定義的組件就有效。這一點談論的是模塊級別的。4. 何為注入服務?雖然你加載了某個模塊,它內部的代碼都加載了。但是每個controller依賴哪些服務,angular要如何去找,你還要告訴angular,這時候就需要依賴注入了。這一點談論的是controller級別的。

綜上所述,你就這樣 controllerX.$inject = [’serviceX’]; 直接最普通的方式加載就行了。如果沒有生效,那應該是以下原因:1. 沒有引入js文件。2. 沒有加載這個service所在的模塊。angular.module(’MyApp’,[’ModuleX’])就行了。3. 但要注意此處你自己的模塊MyApp使用可以多次,但是定義依賴只能一次,否則前后引用的就不是一個模塊了。即你可以

angular.module(’MyApp’,[’ModuleX’]) . controller(’ControllerA’, ControllerA);angular.module(’MyApp’) . controller(’ControllerB’, ControllerB);

但一定不可以

angular.module(’MyApp’,[’ModuleX’]) . controller(’ControllerA’, ControllerA);angular.module(’MyApp’,[’ModuleX’]) . controller(’ControllerB’, ControllerB);

檢查下這3點,如果還是不行再繼續貼代碼討論吧。

回答2:

首先這個問題要分兩種情況,一種是服務A和控制器B都屬于同一個模塊,另一種情況是服務A和控制器B都不屬于同一個模塊。

我首先把代碼部分貼出來吧:首先是index.html,代碼如下:

<body ng-app='MyApp'><h1>依賴注入</h1><p ng-controller='MyController as vm'> <button ng-click='vm.getUsers()'>getUsers(依賴同一個模塊的服務)</button> <button ng-click='vm.getUsers2()'>getUsers2(依賴不同模塊的服務)</button> <p ng-repeat='v in vm.users'>{{v.avatar_url}}</p> <p ng-repeat='v in vm.users2'>{{v.id}}</p></p></body>

另外注意要在index.html中引入a.js b.js c.js

a.js代碼部分如下:

angular.module(’MyApp’,[’MyModule’]) .controller(’MyController’, MyController);MyController.$inject = [’MyService’, ’MyService2’];function MyController(MyService, MyService2){ var vm = this; vm.users = []; vm.users2 = []; vm.getUsers = getUsers; vm.getUsers2 = getUsers2; function getUsers(){console.log(’依賴的是同一個模塊的服務’);MyService.getData() .then(function(res){vm.users = res.data; }) } function getUsers2(){console.log(’依賴的是不同模塊的服務’);MyService2.getData() .then(function(res){vm.users2 = res.data; }) }}

b.js代碼部分如下:

angular.module(’MyApp’).service(’MyService’, MyService);MyService.$inject = [’$http’];function MyService($http){ var url = ’https://api.github.com/users’; var service = {getData: getData }; return service; function success(res){return res; } function fail(e){console.log(e); } function getData(){return $http.get(url) .then(success) .catch(fail); }}

c.js代碼部分如下:

angular.module(’MyModule’,[]) .service(’MyService2’, MyService);MyService.$inject = [’$http’];function MyService($http){ var url = ’https://api.github.com/users’; var service = {getData: getData }; return service; function success(res){return res; } function fail(e){console.log(e); } function getData(){return $http.get(url) .then(success) .catch(fail); }}

另外你也可以到這里看看寫的一個demo,就是上面代碼的運行結果。

需要注意的就是,如果是同一個模塊的話,直接在控制器中注入這個服務就可以使用了;如果是不同的模塊,那么就有必要在主模塊中將你要依賴的那個模塊注入到我們的主模塊中,然后也可以在控制器中使用了。

你看過代碼后應該明白的差不多了,如果還有什么不明白的,還可以看看我之前寫過的一篇文章,希望可以幫助你。

回答3:

我想估計是題主不明白 angularjs 里的數據模型(Model)和視圖(View)之間是通過控制器 (controller) 發生數據雙向綁定(Data Binding)關系。

angular.js - angular跨文件注入服務

一個數據模型(M)可以有多個視圖(V),也就是說一個控制器(C)可以控制多個視圖。這些視圖之間可能有業務邏輯之間的關系,為此創建多個控制器,以致讓一個控制器控制一個視圖。然而這些控制器也有可能有相同的內容,可以提取出來。那么有兩種方式:

方式一(繼承方式,常見糟糕情況): 多個控制器繼承通用的控制器。方式二(angularjs的service): 將通用的內容提取為一個或多個service,讓控制器調用(按需調用不同的service)

可以對比一下兩種, service 更具模塊化,更有復用性。

我想,這樣了解了這一過程,大概就知道樓上說的 依賴注入服務 啦。

相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
亚洲精选在线| 免费在线欧美视频| 国产精品久久久久久久浪潮网站 | 18涩涩午夜精品.www| 女生裸体视频一区二区三区| 欧美成人国产一区二区| 国产a视频精品免费观看| 69堂精品视频| 国产很黄免费观看久久| 91精品国产色综合久久ai换脸| 美国十次综合导航| 欧美午夜寂寞影院| 人人爽香蕉精品| 欧美综合天天夜夜久久| 日产精品久久久久久久性色| 一本一道久久a久久精品| 日韩精品视频网| 另类激情亚洲| 日韩在线卡一卡二| 欧美最新大片在线看| 老司机免费视频一区二区| 欧美日韩视频在线一区二区| 韩国成人精品a∨在线观看| 欧美性一级生活| 国产一区二区伦理| 日韩一级黄色大片| 91在线看国产| 国产精品水嫩水嫩| 日韩视频一区二区三区在线播放免费观看| 亚洲视频一区二区免费在线观看| 国产精品五区| 日韩经典一区二区| 欧美亚洲高清一区| 国产成人夜色高潮福利影视| 国产亚洲综合av| 在线观看一区| 午夜精品成人在线视频| 欧美日韩亚洲综合一区二区三区| 成人在线综合网站| 欧美激情一区二区三区全黄| 亚洲精品日韩精品| 午夜精品福利视频网站| 欧美日韩一区二区不卡| 波多野结衣一区二区三区| 国产精品色噜噜| 亚洲在线免费| 精品一区二区三区在线播放 | 免费日本视频一区| 欧美一区二区在线看| 欧美黄色一区| 一区二区三区在线观看动漫| 色就色 综合激情| 高清国产一区二区| 国产精品视频九色porn| 国产精品午夜av在线| 另类小说欧美激情| 久久久综合视频| 国产一区二区黄色| 国产制服丝袜一区| 中文字幕的久久| 久久久久成人精品免费播放动漫| 国产成人综合在线| 亚洲欧洲av另类| 在线观看免费成人| 成人免费视频caoporn| 中文字幕在线一区| 日本久久电影网| 972aa.com艺术欧美| 国产片一区二区三区| 中文欧美日韩| 国内精品久久久久影院色| 国产精品天天看| 在线观看视频一区二区欧美日韩| 99久久久国产精品免费蜜臀| 亚洲影视在线播放| 日韩一区二区视频在线观看| 国内自拍亚洲| 久久99国产精品尤物| 亚洲国产成人午夜在线一区 | 精品视频一区 二区 三区| 91同城在线观看| 亚洲国产欧美另类丝袜| 91精品在线麻豆| 亚洲精品免费观看| 国产精品亚洲一区二区三区在线| 亚洲天堂免费在线观看视频| 欧美精品丝袜中出| 亚洲国产一区二区三区在线播 | 一本色道久久加勒比精品| 成人黄色免费短视频| 亚洲精选免费视频| 51午夜精品国产| 中文日韩在线| 丁香啪啪综合成人亚洲小说| 亚洲黄色性网站| 日韩女同互慰一区二区| 国产精品视频| 99国产精品国产精品久久| 午夜欧美2019年伦理| 精品国产乱码久久久久久老虎| 亚洲欧美精品在线观看| 99久久综合色| 日韩精品五月天| 国产日韩一级二级三级| 欧美视频在线一区二区三区| 韩国一区二区三区在线观看| 国模娜娜一区二区三区| 亚洲精品免费电影| 欧美va天堂va视频va在线| 久久久国产精品一区二区中文 | 日韩视频在线一区二区三区| 成人自拍视频在线| 日韩精品五月天| 亚洲欧美日韩中文字幕一区二区三区 | 亚洲制服丝袜av| 精品免费日韩av| 美女亚洲精品| 国内精品久久久久久久果冻传媒| 国产精品综合二区| 午夜影院在线观看欧美| 中文字幕日韩欧美一区二区三区| 日韩三级中文字幕| 色婷婷综合中文久久一本| 激情欧美国产欧美| av电影在线不卡| 国产在线国偷精品免费看| 亚洲国产精品久久艾草纯爱| 欧美激情综合网| 精品久久久久久综合日本欧美| 欧美日韩精品综合在线| 国产一区二区三区久久久久久久久| 欧美chengren| 成人免费毛片片v| 韩国欧美一区二区| 日韩在线卡一卡二| 亚洲国产日韩在线一区模特| 亚洲天堂av一区| 国产精品久久久久影院老司| 久久综合av免费| 日韩亚洲欧美高清| 欧美放荡的少妇| 欧美亚日韩国产aⅴ精品中极品| 国产精品尤物| 狠狠久久综合婷婷不卡| 99久久精品国产观看| 国产在线一区二区| 日韩av一区二区三区| 亚洲小说欧美激情另类| 亚洲免费观看视频| 日韩毛片高清在线播放| 中文字幕电影一区| 日本一区二区综合亚洲| 久久婷婷国产综合精品青草| 91精品国产麻豆国产自产在线| 欧美性videosxxxxx| 日本韩国欧美在线| 色悠悠久久综合| 色综合久久久久网| 色一区在线观看| 91久久精品网| 在线一区二区观看| 在线一区二区三区| 日本乱人伦一区| 91电影在线观看| 色噜噜狠狠一区二区三区果冻| 玖玖在线精品| 色综合久久88色综合天天| 久久国产日韩欧美| 一本大道久久a久久综合| 色综合激情五月| 在线视频一区二区三区| 日本久久一区二区| 欧美视频在线一区| 91麻豆精品91久久久久同性| 欧美一级夜夜爽| 日韩免费在线观看| 欧美xxx久久| 久久久99久久| 国产精品色噜噜| 亚洲欧洲综合另类在线| 一区二区三区在线播| 亚洲va欧美va人人爽| 日韩中文字幕区一区有砖一区 | 久久精品中文| 日本道色综合久久| 欧美日韩在线一区二区| 538在线一区二区精品国产| 日韩一卡二卡三卡| 国产亚洲精品7777| 中文字幕在线不卡视频| 亚洲男同性恋视频| 亚洲成人福利片| 蜜桃av噜噜一区| 欧美精品一区二区视频| 亚洲国内精品| 久久久xxx| 91精品欧美一区二区三区综合在 | 一区精品久久| 中文亚洲欧美| 在线视频欧美区|