日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

瀏覽:313日期: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 更具模塊化,更有復用性。

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

相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
sm久久捆绑调教精品一区| 欧美一区91| 精品美女在线视频| 国产欧美日韩影院| 国产免费av国片精品草莓男男 | 亚洲精品**中文毛片| 国产va免费精品观看精品视频| 麻豆成人在线观看| 久久久国产精品网站| 久久一区欧美| 成人亚洲一区| 欧美中文一区二区| 91精品99| 日韩一区二区三区四区五区| 国产日产精品_国产精品毛片| 国产精品啊v在线| 免费在线欧美黄色| 亚洲一级少妇| 激情欧美丁香| 亚洲影视一区| 亚洲网址在线观看| 国产精品一区二区精品视频观看 | 91精品蜜臀一区二区三区在线| 欧美一级精品| 欧美一级专区| 国产日韩一区二区三免费高清| 青青国产精品| 丁香婷婷久久| 9久re热视频在线精品| 综合色就爱涩涩涩综合婷婷| 日韩黄色av| 福利片在线一区二区| 蜜桃国内精品久久久久软件9| 亚洲小说春色综合另类电影| 久久99免费视频| 久久精品欧美一区| 色婷婷成人网| 国产精品成人一区二区不卡| 国产精品88久久久久久| 婷婷亚洲成人| 成人在线超碰| 亚洲国产影院| 国产九九精品| 99视频精品全部免费在线视频| 中文字幕成人| 98精品视频| 亚洲香蕉久久| 日韩欧美在线中字| 国产一区二区高清| 精品网站999| 日本大胆欧美人术艺术动态| 国产激情一区| 丝袜美腿成人在线| 成人影视亚洲图片在线| 亚洲伊人精品酒店| 福利欧美精品在线| 亚洲综合另类| 福利一区和二区| 亚洲人成网站在线在线观看| 日本不卡免费高清视频在线| 亚洲va久久| 免费国产自久久久久三四区久久 | 麻豆国产一区| 亚洲精品一区二区在线看| 国产探花一区| 午夜日韩av| 超级白嫩亚洲国产第一| 日韩一区二区三区在线看| 成人在线网站| 麻豆精品视频在线观看视频| 蜜桃久久久久久| 欧美日韩在线观看视频小说| 免费看久久久| 亚洲男人在线| 午夜欧美精品久久久久久久| 精品久久久久中文字幕小说| 亚洲人妖在线| 欧美综合另类| 美女av在线免费看| 91成人在线| 国产精品女主播一区二区三区| 国产成年精品| 欧美日本精品| 亚洲精品精选| 一区视频在线| 久久九九精品| 欧美激情国产在线| 久久99免费视频| 日本va欧美va瓶| 亚洲欧美视频| 亚洲va中文在线播放免费| 国产欧美日韩亚洲一区二区三区| 国产一区日韩一区| 国产成人精品亚洲线观看| 亚洲综合不卡| 久久精品卡一| 国产黄大片在线观看| 日韩精品免费视频一区二区三区 | 欧美aa一级| 日韩精品视频中文字幕| 亚洲成人精选| 日韩美女一区二区三区在线观看| 国产精品久久久一区二区| 四虎精品永久免费| 一区二区三区四区精品视频| 国产精品丝袜xxxxxxx| 六月婷婷综合| 日本久久黄色| 国产suv精品一区| 精品精品99| 精品视频在线一区二区在线| 国产精品mm| 国产精品一区二区精品视频观看| 日韩福利在线观看| 日韩精品中文字幕一区二区| 亚洲区国产区| 日韩精品第二页| 午夜日韩影院| 欧美一级网址| 国产精品宾馆| 老色鬼精品视频在线观看播放| 久久国产生活片100| 国产精品网址| 久久av免费看| 成人精品久久| 在线天堂资源www在线污| 久久久久久色| 日本成人中文字幕| 亚洲精品第一| 日韩av一区二| 国产亚洲第一伦理第一区| 久久国产欧美日韩精品| 国产精品一区高清| 精品一区二区三区免费看| 精品亚洲成人| 偷拍精品精品一区二区三区| 色婷婷狠狠五月综合天色拍| 99久久久久国产精品| 伊人久久成人| 蜜臀精品久久久久久蜜臀| 蜜桃一区二区三区在线| 日韩精品乱码av一区二区| 日韩福利视频一区| 久久精品一区二区国产| 日本不卡免费高清视频在线| 久久九九99| 人人爽香蕉精品| 国产色99精品9i| 精品一区二区三区的国产在线观看| 超碰99在线| 国产视频一区三区| 日韩中文字幕不卡| 久久国产尿小便嘘嘘| 国产一区二区亚洲| 亚洲女同一区| 日韩av成人高清| 给我免费播放日韩视频| 婷婷亚洲五月色综合| 亚洲三级网址| 精品少妇一区| 午夜日韩av| 日本少妇精品亚洲第一区| 欧美激情视频一区二区三区免费 | 欧美日韩精品免费观看视完整| 欧美~级网站不卡| 伊人www22综合色| 久久久91麻豆精品国产一区| 在线中文字幕播放| 亚洲调教视频在线观看| 亚洲bt欧美bt精品777| 国产精品蜜月aⅴ在线| 在线看片福利| 欧洲激情综合| 日韩精品高清不卡| 天堂8中文在线最新版在线| 午夜久久免费观看| 国产情侣一区| 亚洲成av人片一区二区密柚| 免费观看在线综合| 欧美黄页在线免费观看| 久久精选视频| 婷婷亚洲精品| 国产一区二区三区四区二区| 欧美成人综合| 久久激五月天综合精品| 久久久噜噜噜| 日本h片久久| 久久精品日韩欧美| 激情久久五月| 日本不卡视频在线| 国产 日韩 欧美一区| 亚洲精品麻豆| 日韩电影免费网站| 少妇高潮一区二区三区99| 亚洲黄色免费av| 一区二区三区网站| 福利一区二区三区视频在线观看| 国产农村妇女精品一二区| 欧美成人一二区| 影音国产精品|