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

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

服務(wù)公司對(duì)安古拉工廠

服務(wù)公司對(duì)安古拉工廠

aluckdog 2019-06-18 13:27:15
服務(wù)公司對(duì)安古拉工廠我都見(jiàn)過(guò)安古拉爾工廠()和angular.service()用于聲明服務(wù);但是,i找不到 angular.service官方文件里的任何地方。這兩種方法有什么區(qū)別?哪一個(gè)應(yīng)該用來(lái)做什么(假設(shè)他們做不同的事情)?
查看完整描述

3 回答

?
搖曳的薔薇

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

angular.service('myService', myServiceFunction);
  angular.factory('myFactory', myFactoryFunction);

我很難把我的頭繞在這個(gè)概念上,直到我這樣對(duì)自己說(shuō):

服務(wù)*功能你寫(xiě)的將會(huì)是新的-編輯:

  myInjectedService  <----  new myServiceFunction()

工廠*功能(構(gòu)造函數(shù))您編寫(xiě)的被調(diào)用:

  myInjectedFactory  <---  myFactoryFunction()

你做什么取決于你自己,但有一些有用的模式.

比如寫(xiě)一個(gè)服務(wù)函數(shù)公開(kāi)公共API:

function myServiceFunction() {
  this.awesomeApi = function(optional) {
    // calculate some stuff
    return awesomeListOfValues;
  }}---------------------------------------------------------------------------------
  // Injected in your controller$scope.awesome = myInjectedService.awesomeApi();

或者使用工廠函數(shù)公開(kāi)公共API:

function myFactoryFunction() {
  var aPrivateVariable = "yay";

  function hello() {
    return "hello mars " + aPrivateVariable;
  }

  // expose a public API
  return {
    hello: hello  };}---------------------------------------------------------------------------------
    // Injected in your controller$scope.hello = myInjectedFactory.hello();

或者使用工廠函數(shù)返回構(gòu)造函數(shù):

function myFactoryFunction() {
    return function() {
        var a = 2;
        this.a2 = function() {
            return a*2;
        };
    };}---------------------------------------------------------------------------------
    // Injected in your controllervar myShinyNewObject = new myInjectedFactory();$scope.four = myShinyNewObject.a2();

用哪一個(gè)?.

你可以用這兩種方法完成同樣的事情。但是,在某些情況下,工廠為您提供了更多的靈活性,以創(chuàng)建一個(gè)具有更簡(jiǎn)單語(yǔ)法的可注入性。這是因?yàn)镸yInjectedService必須始終是對(duì)象,myInjectedFactory可以是對(duì)象、函數(shù)引用或任何值。例如,如果您編寫(xiě)了一個(gè)服務(wù)來(lái)創(chuàng)建構(gòu)造函數(shù)(如上面的示例所示),則必須實(shí)例化它,如下所示:

var myShinyNewObject = new myInjectedService.myFunction()

可以說(shuō),這比這更不可?。?/trans>

var myShinyNewObject = new myInjectedFactory();

(但首先您應(yīng)該小心使用這種模式,因?yàn)?/trans>新的-控制器中的ing對(duì)象創(chuàng)建了難以模擬用于測(cè)試的硬跟蹤依賴項(xiàng)。與其使用服務(wù),不如讓服務(wù)為您管理對(duì)象集合。new()(詭計(jì)多端)


還有一件事,他們都是單身.。

還請(qǐng)記住,在這兩種情況下,角是幫助您管理單例。無(wú)論您在何處注入服務(wù)或函數(shù),也不管注入多少次,您都將得到對(duì)同一個(gè)對(duì)象或函數(shù)的相同引用。(工廠只返回?cái)?shù)字或字符串之類的值時(shí)除外。在這種情況下,您將始終得到相同的值,而不是引用。)


查看完整回答
反對(duì) 回復(fù) 2019-06-18
?
MYYA

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

簡(jiǎn)單地說(shuō).。

// Serviceservice = (a, b) => {
  a.lastName = b;
  return a;};// Factoryfactory = (a, b) => Object.assign({}, a, { lastName: b });

const fullName = { firstName: 'john' };


// Service

const lastNameService = (a, b) => {

  a.lastName = b;

  return a;

};

console.log(lastNameService(fullName, 'doe'));


// Factory

const lastNameFactory = (a, b) => 

  Object.assign({}, a, { lastName: b })

console.log(lastNameFactory(fullName, 'doe'));


查看完整回答
反對(duì) 回復(fù) 2019-06-18
  • 3 回答
  • 0 關(guān)注
  • 520 瀏覽

添加回答

舉報(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)