cari

Rumah  >  Soal Jawab  >  teks badan

angular.js - Adakah $scope parameter formal atau parameter sebenar apabila mengisytiharkan fungsi pengawal dalam Angular?

Saya agak keliru apabila saya baru menggunakan Angular Ambil fungsi pengawal berikut sebagai contoh

    function hello($scope) {
        $scope.name = '张三'
    }

Ini ialah pengisytiharan fungsi, $scope sepatutnya menjadi parameter rasmi, bukan? Tetapi menukar $scope kepada pengecam lain seperti s tidak akan berfungsi. Ia boleh dilihat bahawa $scope ialah parameter sebenar yang diluluskan apabila fungsi hello dipanggil. Tetapi ketiga-tiga baris kod ini ialah pengisytiharan fungsi, jadi mengapa parameter sebenar diluluskan?

Saya mungkin menyedari bahawa ini bukan pengisytiharan fungsi biasa Mungkin ia ada kaitan dengan mekanisme pengikatan fungsi pengawal Angular? Apa sebenarnya rupanya?

世界只因有你世界只因有你2776 hari yang lalu808

membalas semua(3)saya akan balas

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-15 16:52:49

    Parameter lulus jenis ini untuk mendapatkan kebergantungan ialah ciri utama AngularJS - salah satu manifestasi suntikan kebergantungan.
    Tetapi mengapa kita boleh mendapatkan kebergantungan dengan hanya mengisytiharkan parameter?

    AngularJS menggunakan $injector untuk mengurus pertanyaan dan pemuatan bergantung, seperti

    // 使用注入器加载应用
    var injector = angular.injector(['ng', 'myApp']);
    // 通过注入器加载$controller服务
    var $controller = injector.get('$controller');
    var scope = injector.get('$rootScope').$new();
    // 加载控制器并传入一个作用域
    var MyController = $controller('MyController', {$scope: scope})
    

    Jika tiada pengisytiharan yang jelas, $injectormenyimpulkan kebergantungan berdasarkan nama parameter Pada masa ini, susunan parameter tidak bermakna.
    Dengan kata lain, kita juga boleh mengisytiharkan seperti ini:

    angular.module('myApp')
    .controller('MyController', ['$scope', 'greeter', function(renamed$scope, renamedGreeter) {
        //do something
    }]);
    

    balas
    0
  • 滿天的星座

    滿天的星座2017-05-15 16:52:49

    Nah, perkara ini hanyalah pengisytiharan fungsi di mana ia ditulis sama ada nama parameter formal adalah penting diputuskan sepenuhnya oleh pembaca Penghurai standard ECMAScript tidak menganggapnya penting (saya rasa), tetapi Angular menulisnya dalam js. . . Dengan cara ini, nama parameter fungsi adalah penting

    balas
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-15 16:52:49

    Skop

    Objek $scope dalam AngularJS ada di sini untuk menukar model domain
    Terdedah kepada pandangan (templat). Hanya tetapkan harta kepada contoh skop dan anda boleh mendapatkan nilai apabila templat diberikan.

    Skop juga boleh memanjangkan data dan fungsi khusus untuk paparan tertentu. Hanya tentukan beberapa fungsi pada contoh skop untuk menukar UI tertentu
    Logiknya terdedah kepada templat.

    Sebagai contoh, anda boleh mencipta kaedah pengambil untuk pembolehubah nama seperti berikut:

    var HelloCtrl = function ($scope) {  
        $scope.getName = function() {     
            return $scope.name;
       };
    }
    

    Kemudian gunakannya dalam templat seperti ini:
    <h1>Hello, {{getName()}} !</h1>

    $skop
    Objek memberi kita kawalan yang sangat tepat ke atas bahagian model yang mana dalam domain ini dan operasi yang tersedia pada lapisan paparan. Secara teorinya, skop AngularJS sangat serupa dengan ViewModel corak MVVM.

    http://note.sdo.com/u/635412003927148913/n/s6cBN~lcIHwG4M1-Y000LW

    balas
    0
  • Batalbalas