cari

Rumah  >  Soal Jawab  >  teks badan

angular.js - Standard untuk suntikan pergantungan dalam angularJS

Apabila saya menggunakan komuniti utama untuk menyemak pengetahuan tentang Angular, saya sering melihat dua mod suntikan pergantungan, beberapa daripadanya ialah pengawal.('Ctr',[$scope,function($scope){...}] ) ;
Sesetengahnya adalah pengawal langsung.('Ctr',function($scope){...});
Saya ingin bertanya sama ada mod yang terakhir ini baharu dan universal?

大家讲道理大家讲道理2790 hari yang lalu716

membalas semua(3)saya akan balas

  • 滿天的星座

    滿天的星座2017-05-15 17:02:16

    Amalan terbaik ialah menggunakan: pengawal.('Ctr',['$skop',fungsi($skop){...}]).

    1. Seperti yang @Deboy katakan, untuk pemampatan js.

    2. Prestasi yang lebih baik. (controller.('Ctr',function($scope){...}), angularjs akan menghuraikan parameter fungsi ini dan akhirnya mendapatkan kandungan untuk disuntik, manakala kaedah penulisan gaya tatasusunan boleh melangkau langkah penghuraian , dan prestasi akan menjadi lebih baik). Dilampirkan kod sumber untuk rujukan:

    function annotate(fn, strictDi, name) {
      var $inject,
          fnText,
          argDecl,
          last;
    
      if (typeof fn === 'function') {
        if (!($inject = fn.$inject)) {
          $inject = [];
          if (fn.length) {
            if (strictDi) {
              if (!isString(name) || !name) {
                name = fn.name || anonFn(fn);
              }
              throw $injectorMinErr('strictdi',
                '{0} is not using explicit annotation and cannot be invoked in strict mode', name);
            }
            fnText = fn.toString().replace(STRIP_COMMENTS, '');
            argDecl = fnText.match(FN_ARGS);
            forEach(argDecl[1].split(FN_ARG_SPLIT), function(arg) {
              arg.replace(FN_ARG, function(all, underscore, name) {
                $inject.push(name);
              });
            });
          }
          fn.$inject = $inject;
        }
      } else if (isArray(fn)) {
        last = fn.length - 1;
        assertArgFn(fn[last], 'fn');
        $inject = fn.slice(0, last);
      } else {
        assertArgFn(fn, 'fn', true);
      }
      return $inject;
    }

    balas
    0
  • 天蓬老师

    天蓬老师2017-05-15 17:02:16

    Oleh kerana semasa proses pengoptimuman bahagian hadapan, js dan fail lain akan dimampatkan dan beberapa rentetan akan digantikan dengan huruf tunggal Jika ini berlaku, suntikan sudut tidak akan dihalang daripada dimampatkan Tidak boleh disuntik. Yang sebelumnya diproses supaya walaupun dimampatkan, ia tidak akan menyebabkan kegagalan suntikan

    Kesan kedua-dua pelaksanaan dalam fasa pembangunan adalah sama

    balas
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-15 17:02:16

    Tiada spesifikasi/standard untuk bercakap tentang pelaksanaan suntikan kebergantungan

    angular, tetapi ia adalah idea yang baik.
    Saya telah menulis tutorial sebelum ini untuk mengajar anda menulis sistem suntikan kebergantungan yang serupa dengan angular Saya harap ia berguna kepada anda: Suntikan ketergantungan tulisan tangan BDD

    balas
    0
  • Batalbalas