第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

AngularJS:工廠和服務(wù)?

AngularJS:工廠和服務(wù)?

繁花不似錦 2019-12-07 14:09:48
由于這仍然引起注意。自問(wèn)了這個(gè)之后,我已經(jīng)完成了一些AngularJS項(xiàng)目,對(duì)于我最常使用的項(xiàng)目factory,建立了一個(gè)對(duì)象并在最后返回了該對(duì)象。但是,我下面的說(shuō)法仍然正確。編輯:我想我終于了解了兩者之間的主要區(qū)別,并且我有一個(gè)代碼示例來(lái)演示。我也認(rèn)為這個(gè)問(wèn)題與建議的重復(fù)問(wèn)題有所不同。重復(fù)項(xiàng)表示該服務(wù)不可實(shí)例化,但是如果您按照我在下面的演示中進(jìn)行設(shè)置,它實(shí)際上是可實(shí)例化的??梢詫⒎?wù)設(shè)置為與工廠完全相同。我還將提供代碼,顯示工廠在哪里進(jìn)行故障轉(zhuǎn)移服務(wù),而其他答案似乎都沒(méi)有。如果我像這樣設(shè)置VaderService(即作為服務(wù)):var module = angular.module('MyApp.services', []);module.service('VaderService', function() {    this.speak = function (name) {        return 'Join the dark side ' + name;    }});然后在我的控制器中,我可以這樣做:module.controller('StarWarsController', function($scope, VaderService) {    $scope.luke = VaderService.speak('luke');   });通過(guò)服務(wù),將實(shí)例化注入到控制器中的VaderService,因此我可以調(diào)用VaderService.speak,但是,如果將VaderService更改為module.factory,則控制器中的代碼將不再起作用,這是主要區(qū)別。使用factory時(shí),不會(huì)實(shí)例化注入到控制器中的VaderService ,這就是為什么在設(shè)置工廠時(shí)需要返回一個(gè)對(duì)象的原因(請(qǐng)參閱問(wèn)題中的示例)。但是,您可以使用與建立工廠完全相同的方式來(lái)設(shè)置服務(wù)(IE使它返回一個(gè)對(duì)象),并且服務(wù)的行為與工廠完全相同有了這些信息,我認(rèn)為沒(méi)有理由使用工廠而不是服務(wù),服務(wù)可以做工廠可以做的一切,甚至更多。下面的原始問(wèn)題。我知道這已經(jīng)被要求很多次,但是我真的看不到工廠和服務(wù)之間的功能差異。我已經(jīng)閱讀了本教程:http : //blogs.clevertech.biz/startupblog/angularjs-factory-service-provider它似乎給出了一個(gè)很好的解釋,但是,我將我的應(yīng)用設(shè)置如下:index.html<!DOCTYPE html><html>    <head>    <title>My App</title>    <script src="lib/angular/angular.js"></script>    <script type="text/javascript" src="js/controllers.js"></script>    <script type="text/javascript" src="js/VaderService.js"></script>    <script type="text/javascript" src="js/app.js"></script>    </head>    <body ng-app="MyApp">         <table ng-controller="StarWarsController">            <tbody>            <tr><td>{{luke}}</td></tr>            </tbody>        </table>    </body></html>app.js:angular.module('MyApp', [  'MyApp.services',  'MyApp.controllers']);controllers.js:var module = angular.module('MyApp.controllers', []);module.controller('StarWarsController', function($scope, VaderService) {    var luke = new VaderService('luke');    $scope.luke = luke.speak();});VaderService.jsvar module = angular.module('MyApp.services', []);然后重新加載index.html(我確定我清空了緩存并進(jìn)行了重新加載)。它的工作原理與module.factory 完全相同。那么兩者之間真正的功能區(qū)別是什么?
查看完整描述

3 回答

?
PIPIONE

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊

提供服務(wù)

從技術(shù)上講,它們是同一件事,實(shí)際上是使用服務(wù)provider功能的不同表示法。$provide


如果您使用的是類:則可以使用服務(wù)符號(hào)。

如果使用的是對(duì)象,則可以使用工廠符號(hào)。

該唯一的區(qū)別service和factory 符號(hào)是服務(wù)是新-ED和工廠不。但是對(duì)于其他所有事物,它們的外觀,氣味和行為均相同。同樣,它只是$ provide.provider函數(shù)的簡(jiǎn)寫。


// Factory


angular.module('myApp').factory('myFactory', function() {


  var _myPrivateValue = 123;


  return {

    privateValue: function() { return _myPrivateValue; }

  };


});


// Service


function MyService() {

  this._myPrivateValue = 123;

}


MyService.prototype.privateValue = function() {

  return this._myPrivateValue;

};


angular.module('myApp').service('MyService', MyService);


查看完整回答
反對(duì) 回復(fù) 2019-12-07
  • 3 回答
  • 0 關(guān)注
  • 623 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)