Angular.js: PERMINTAAN UMPAN BALIK: `angular.component()` - nama pengontrol direktif default

Dibuat pada 2 Jan 2016  ·  59Komentar  ·  Sumber: angular/angular.js

Kita harus menggunakan nilai default yang konsisten untuk nama pengontrol direktif komponen saat dilampirkan ke ruang lingkup. Lihat https://github.com/angular/angular.js/issues/10007#issuecomment -166704255

Saat ini kami menggunakan nama kanonik komponen secara default. Ini tidak ideal karena

a) nama komponen bisa menjadi panjang dan berat untuk digunakan dalam template
b) lebih rumit untuk memperbarui templat secara otomatis untuk digunakan di Angular 2, di mana konteksnya adalah pengontrol.

Kriteria nama tersebut adalah:

1) harus sama untuk semua komponen
2) harus dimulai dengan $
3) harus pendek (2-4 karakter)

Selain itu, nama harus mewakili apa yang sebenarnya dipublikasikan ke ruang lingkup.

Beberapa saran sebelumnya antara lain:

  • vm - ini adalah nama yang umum digunakan di banyak aplikasi tetapi pengontrol belum tentu merupakan "model tampilan"
  • $comp - ini adalah saran saat ini dari tim tetapi dapat dikacaukan dengan membandingkan dan tidak sesingkat itu
  • $ctrl - ini bisa dikacaukan dengan elemen kontrol input
  • $this - pengontrol tidak benar-benar this dalam template, karena konteksnya sebenarnya masih lingkup
$compile feedback feature

Komentar yang paling membantu

Jadi suara masuk dan tampilannya seperti ini:

$comp  4
$cmp   2
$ctrl  19
$vm    3
$this  3
$ctx   2
$vc    1

Favorit yang jelas adalah $ctrl . Selain menjadi populer, ia melewati kriteria yang diposting di bagian atas edisi ini. Selain itu tidak memperkenalkan konsep yang sangat baru. Hal yang dimaksud sebenarnya adalah pengontrol (komponen/pengendali arahan) yang sudah dipahami oleh pengembang Angular dan sama seperti beberapa pengembang telah terbiasa menggunakan vm dalam arahan mereka, tidak akan lama bagi pengembang untuk kapas ke default ini.

Semua 59 komentar

c) pemrogram tergoda untuk menggunakan isolate:false dan akses ke pengontrol ancestor secara langsung.

@drpicox - Saya tergoda untuk mengatakan bahwa kami melarang isolate: false untuk komponen yang dibuat menggunakan helper ini.

Saya setuju, setelah mempertimbangkan ini:

  • isolate: true ketika batasan adalah 'E': bagi saya mereka benar-benar komponen, di mana notasi $ctrl memiliki arti penuh
  • isolate: false ketika batasnya adalah 'A': bagi saya mereka adalah _decorators_, semacam penambah komponen yang ada, dalam hal ini $ctrl bertabrakan sehingga nomenklatur saat ini baik-baik saja

Tetapi saya menganggap bahwa kasus kedua lebih baik dilakukan dengan arahan, _decorators_ tidak sering, biasanya level rendah, dan tidak cocok untuk junior.

Jadi mungkin ide yang bagus untuk melarang isolate: false .

Di jalur pemikiran lain, tentang _decorators_, fungsi untuk mendapatkan pengontrol komponen 'E' dari entitas saat ini seharusnya merupakan ide yang bagus, khususnya untuk menulis _decorators_ generik untuk menangani komponen apa pun saat ini (memerlukan kekuatan untuk mengetahui terlebih dahulu pengontrol mana yang adalah dan Anda tidak dapat menggunakan semacam antarmuka dari apa yang Anda cari).

Saya suka $cmp , tetapi menemukan $comp bahkan lebih baik, karena lebih jelas.

Saya suka $cmp , tetapi menemukan $comp bahkan lebih baik, karena lebih jelas.

Saya suka $comp . Setiap kali saya melihat $cmp saya pikir "bandingkan".

saran yang berbeda: mengapa tidak memiliki nama komponen sebagai nama instance pengontrol?
mis: profil pengguna -> scope.userProfile

@tabanliviu Begitulah yang saat ini dilakukan pada master tetapi @petebacondarwin disebutkan dalam masalah ini, di posting pertama, mengapa nama umum lebih baik.

@mgol :+1: Saya pikir saya mengabaikannya ketika saya membaca tiketnya. Haruskah perubahan ini dianggap lebih sebagai masalah ngUpgrade? Saya pikir dalam konteks 1.x sudut implementasi saat ini adalah solusi yang baik. Mungkin mengekspos ini sebagai fungsi pengaturan yang mengambil nama komponen dan mengeluarkan nama pengontrol? cara ini melayani pola saat ini dan jalur migrasi di masa depan.

Waktu bersepeda.

+1 untuk $ctrl.

Ctrl memiliki banyak budaya yang sudah ada sebelumnya dalam dokumentasi dan contoh Angular 1 sebagai akhiran "pengontrol". Coba googling "angular ctrl" untuk ukuran yang baik.

Pilihan saat ini untuk menurunkannya dari nama komponen cukup buruk, karena memang cenderung cukup panjang dalam aplikasi nyata.

:+1: untuk $ctrl , $vm sebagai default terasa lebih seperti pernyataan tentang bagaimana pengontrol harus digunakan.

+1 untuk $ctrl .

Kami memperdebatkan hal ini dengan cukup berat di tim ng-forward dan memutuskan bahwa ctrl adalah istilah yang kurang dimuat daripada vm .

Saya memilih $ctrl dan saya akan sangat senang jika ini mendorong ppl untuk tidak memanggil pengontrol mereka vm lagi :P

Oh, saya juga ingin menambahkan itu

ini dapat dikacaukan dengan elemen input ConTROL

Tidak. Tidak juga.

$ctrl

Saya pikir itu akan menjadi yang paling mudah dipahami dan intuitif untuk semua orang.

+1 $ctrl

Saran lainnya:

  1. $as - seperti pengontrol sebagai
  2. $at - like @ - sementara dalam skrip kopi merujuk ke konteks 'ini'
  3. $class - meskipun 5 karakter, ini dekat dengan notasi kelas komponen ng2.
  4. $prox - karena secara konseptual, instance Ctrl adalah proxy ke lapisan layanan
  5. $ctx - pintasan untuk konteks
    Terima kasih.

Saya memilih $this karena di ng2 this controller adalah konteks template (dan menurut saya component sangat baik dalam peran alat transisi antara ng1 dan ng2).

+1 untuk $ctrl

Saya juga lebih suka properti $ctrl , karena mewakili pengontrol komponen.

+1 untuk $ctrl

+1 untuk $ini

Saya bahkan akan pergi dengan this dan menjatuhkan $ jika tidak terlalu banyak hack untuk melakukannya. Ini juga satu-satunya pilihan yang tidak singkat untuk sesuatu yang lain, dan saya benci singkatan. :)

Saya akan memilih $ctrl atau $cc (kependekan dari component controller)

+1 untuk $ctrl

Kita bisa menyebutnya hanya $troll , ia memiliki sedikit $this dan setengah dari $controller . Tidak, hanya bercanda, saya baik-baik saja dengan $ctrl . :+1:

$ctrl + 1

$vm

kelebihan

  • lebih sedikit konsep baru
  • pendek
  • tidak mewakili objek sebenarnya (tetapi pengembang transisi akan mendapatkannya ... dan itulah intinya)

Kontra

  • tidak mewakili objek sebenarnya (tetapi pengembang transisi akan mendapatkannya ... dan itulah intinya)

$ctx - pintasan untuk konteks.

Lebih umum dari $ctrl , kurang anonim dari $vm , tidak membingungkan seperti $comp atau $this .

Saya melihat mesin template (Jade, Handlebars, Moustache.js, Dust.js, Nunjucks, EJS, dll.) dan sepertinya nama context , locals atau data digunakan untuk nama variabel yang diteruskan ke metode render.

Juga $ctx , untuk konteks, tidak memiliki kelebihan kognitif yang sama dengan $ctrl (atau $this ) dan, memang, Anda mengatakan in Angular 2, where the context is the controller .

@albertosantini - satu masalah dengan $ctx adalah bahwa konteks aktual adalah lingkup saat ini, yang juga dapat diakses langsung oleh this .

$vc - singkatan dari View Controller.
saya telah menemukan referensi di dokumen Apple

tldr;

"...Kelas UIViewController mendefinisikan metode dan properti untuk mengelola tampilan Anda, menangani acara ... "

Saya sangat memilih $this :

<textarea ng-change="$this.handleChange">

_Pro:_

  • Keuntungan TERBESAR : Anda tidak perlu melakukan ctrl = this di dalam Controller Anda, untuk membuat kedua entitas terlihat sama.
  • Apa pun selain $this terasa seperti Angular memperkenalkan _"bahasa yang lebih eksklusif"_, yang merupakan salah satu keluhan populer tentang Angular . Kontroler Anda akan menjadi tercemar seperti itu:
  controller: function() {
    var ctrl = this;

    ctrl.items = [];
    ctrl.text = '';
    ctrl.handleSubmit = function () {
        ctrl.items.push({text: ctrl.text});
        ctrl.text = '';
    };
  }

alih-alih yang lebih bersih, elegan, dan kerangka-agnostik

  controller: function() {
    this.items = [];
    this.text = '';
    this.handleSubmit = function () {
       this.items.push({text: this.text});
       this.text = '';
    };
  • Yang terakhir adalah fungsi JavaScript murni yang dapat digunakan kembali di mana saja dengan atau tanpa Angular. Yang pertama akan terlihat di luar konteks di tempat lain.
  • Perhatikan bagaimana bahkan penyorot sintaks adalah teman Anda di cuplikan terakhir dan bagaimana ia melawan Anda kembali di cuplikan sebelumnya. Keterbacaan kode adalah masalah penting.
  • Sintaks ini mirip dengan Bereaksi seperti yang muncul di halaman arahan mereka :
<textarea onChange={this.handleChange}>
  • Dalam React, konteks DOM dan instance Controller diperlakukan sebagai entitas yang sama persis , dan React bahkan memanfaatkannya, mengklaim pendekatan mereka lebih sederhana.
  • Angular tentu bukan React, tapi banyak orang yang menggunakan atau melihat keduanya, jadi lebih banyak kesamaan akan terasa lebih bersahabat alias tidak membingungkan mereka.

@dmitriz Satu masalah dengan $this di AngularJS, adalah bahwa dalam template konteks (yaitu this ) benar-benar bukan pengontrol. Tampaknya di React (dan Angular 2) mereka benar-benar hal yang sama sehingga masuk akal untuk menggunakan this (atau $this ). Di Angular 1, mereka tidak sama sehingga $this sebenarnya dapat menyebabkan lebih banyak kebingungan.

Mengenai sisi JavaScript, sangat umum dalam kode ES5 untuk alias this ke sesuatu yang lain karena masalah pengikatan this saat memanggil metode gratis. Jadi pengontrol masih akan sering memiliki sesuatu seperti var that = this , dalam hal ini seseorang juga dapat menggunakan var ctrl = this .

Karena itu, tidak ada persyaratan untuk melakukan ini di pengontrol Anda jika Anda tidak mau. Sangat masuk akal IMO untuk menggunakan this secara internal dalam suatu objek, tetapi kemudian merujuk ke suatu objek dengan nama lain saat menggunakannya dari luar.

@dmitriz , Anda tidak harus memiliki alias yang sama di pengontrol dan di tampilan (saya tidak pernah melakukannya). Plus saya selalu menggunakan var self = this di controller, untuk menghindari .bind(this) untuk callback dll.
Jadi, ini seharusnya tidak menjadi masalah, imo.

Mengenai opsi lain:

  • $ctx : Saya tidak suka ini, karena (seperti yang disebutkan @petebacondarwin ), controller bukanlah konteks dari ekspresi.
  • $this : Saya tidak suka ini, karena (dalam ekspresi Angular) this adalah alias khusus untuk lingkup saat ini, jadi memiliki this --> scope dan $this --> controller akan lebih membingungkan. (Saya akan menyukainya sebaliknya.)
  • $vm : Saya tidak suka ini (karena alasan yang telah disebutkan), tetapi saya dapat melakukannya jika tidak ada yang lebih baik yang memenuhi batasan kami.
  • $cmp : Tidak terlalu memuaskan (karena tidak 100% akurat), tetapi cukup deklaratif. Bisa pergi dengan itu jika tidak ada yang lebih baik memenuhi kendala kami.
  • $comp : Saya lebih suka $cmp , karena lebih pendek (dan saya tidak menemukannya lagi "bisa membingungkan" dengan compare daripada $comp ).
  • $ctrl : Saya sangat menyukai ini. Ini cukup pendek, deklaratif dan seakurat mungkin. Saya selalu menambahkan pengontrol saya dengan ctrl dan saya tidak pernah menyaksikan kebingungan apa pun dengan ConTRoL (tetapi orang yang lebih berpengetahuan bersikeras bahwa ada kebingungan :)). Jika kita memutuskan kebingungan bukanlah masalah, saya pasti akan memilih ini, tapi saya baik-baik saja dengan sesuatu yang lain.
  • $troll : Perlu dipikirkan lagi. Itu pasti memiliki potensi :stuck_out_tongue:
  • Pilihan lain ( $as , $at , $cc , $prox , $vc ): Saya pikir mereka memperkenalkan konsep baru dan akan lebih membingungkan daripada membantu.

Saya memilih $ctrl , karena itu _is_ pengontrol direktif. Sederhana.

Terhadap yang lain:

  • $vm -- Seperti yang telah ditunjukkan bukan maksud penggunaan yang diperlukan => entah kebingungan dalam membaca pola/kode atau lebih sedikit pilihan untuk pengembang (dipaksa untuk mengimplementasikan vm)
  • $cmp -- Yah, itu bukan komponen itu sendiri tetapi (hanya) pengontrolnya? Jadi sebenarnya menyesatkan?
  • $this -- Juga telah disebutkan, ini membingungkan. Apa yang dibuat oleh instance pengontrol "ini" dalam ruang lingkup? Secara semantik, saya tidak melihat ini bisa.. yah.. dimengerti?
  • $ctx -- Sebenarnya sama dengan $this .

Juga seperti yang sudah dikatakan Pascal: Saya tidak melihat kebingungan dengan elemen kontrol. Kecuali Angular2 menyuntikkan semua DOM/elemen input dengan cara seperti itu (yaitu $ctrl, $val, $cmbx, dan seterusnya), saya tidak melihat ini menjadi masalah.

+1 $ctrl

Di baris yang sama dari komentar sebelumnya:

  • $vm , $as , $at , $cc , $prox , $vc , $ctx ,. ..: memperkenalkan konsep baru yang tidak perlu kepada programmer
  • $this : karena this sudah ada, mungkin membingungkan programmer
  • $cmp or $comp : (lebih baik dulu) seharusnya bagus karena memfokuskan pemrogram ke dalam model komponen, tetapi mereka mungkin tidak langsung
  • $ctrl : hanya apa yang sedang dipublikasikan di ruang lingkup, pengontrol, jadi tampaknya sangat jelas mudah dimengerti dan digunakan

Begitu, terima kasih telah mengklarifikasi, saya tidak tahu this = $scope tetapi, ya, itu mengesampingkannya.

Kemudian $ctrl terdengar seperti pilihan terbaik berikutnya, selain $troll yaitu :)

+1 untuk $ctrl : paling intuitif dan paling umum

@petebacondarwin Terima kasih atas detailnya.

Jadi +1 untuk $ctrl .

Saya lebih suka deklaratif $ctrl sebagai nama default.

Mengapa tidak baik?

@petebacondarwin @PascalPrecht

Mengapa VM bukan representasi yang baik?

(Jika Anda sudah membahasnya pada masalah yang berbeda, cukup tautkan jika Anda bisa)

Karena AFAIK, pengontrol di Angular lebih dekat ke Model Tampilan daripada pengontrol klasik dari MVC. tapi mungkin aku kehilangan sesuatu.

+1 untuk $vm

Saya setuju dengan poin @QuinntyneBrown -

itu lebih pendek.

tapi yang lebih penting -

Panduan gaya @johnpapa sangat populer, dan banyak orang yang saya kenal menyebutnya sebagai bagian dari program pelatihan "pengembang baru" mereka.

Jika kami mengubah ini di sini, kami harus mempertimbangkan efeknya pada pengembang baru (mungkin mengirimkan PR ke panduan gaya)

Itu sebabnya saya suka nama "$vm" yang lebih pendek (BTW, mengapa harus dimulai dengan $ ? :)

(BTW, kenapa harus dimulai dengan $ ? :)

Nama yang ditentukan sudut dimulai dengan $ ketika mereka berbagi ruang nama dengan definisi programmer, ini menghindari tabrakan. Dalam hal ini, itu didefinisikan oleh Angular dan didefinisikan di dalam ruang lingkup, di mana programmer dapat memiliki definisinya sendiri. Menggunakan $ kami menghindari tabrakan nama dan Angular berperilaku secara konsisten dengan apa yang diharapkan programmer.

(@johnpapa) Tujuan dari panduan gaya ini adalah untuk memberikan panduan dalam membangun aplikasi Angular dengan menunjukkan konvensi yang saya gunakan dan, yang lebih penting, mengapa saya memilihnya.

Gaya Y032 Gunakan variabel tangkap untuk ini saat menggunakan sintaks controllerAs. Pilih nama variabel yang konsisten seperti vm, yang merupakan singkatan dari ViewModel.

Jadi tidak masalah apakah itu vm , ctrl , atau troll itu hanya harus menjadi variabel yang konsisten.
Selain itu, seperti yang saya tunjukkan sebelumnya, idenya bukan untuk menambahkan konsep baru: vm singkatan dari ViewModel , jika Anda tidak menggunakan Model Tampilan atau tidak terbiasa dengannya, Anda tidak akan mengerti apa singkatan dari vm atau ViewModel , yang akan membingungkan.

Saya bukan penggemar nama yang membingungkan. Saya pikir ctrl membingungkan. Ini adalah pengontrol? kontrol (seperti kontrol html)? dan bukankah ini untuk Komponen?

Saya memilih vm atau comp . vm biasanya digunakan dan mudah dijelaskan. comp baru, tetapi tidak sulit untuk diramalkan.

Bagaimana dengan $ctlr (yaitu Kontrol) daripada $ctrl ?

+1 $komp

@petebacondarwin Oh jumlah dislektika (seperti saya) yang akan mengebom kami dengan isu-isu tentang ini... :)

@drpicox Terima kasih atas penjelasannya, saya melihat poin Anda dan valid. ini sulit, tetapi saya dapat membagikannya setidaknya dari pengalaman saya, saya tidak kesulitan mengajari pengembang konvensi "vm", dan membantu beberapa perusahaan menyusun aplikasi besar mereka seperti itu, mereka mendapatkannya dengan cukup cepat, tapi mungkin saya' m sendirian dalam pengalaman ini.

Tapi saya mengerti poin Anda. setuju dengan $

Saya masih untuk $vm, tetapi saya baik-baik saja dengan $comp juga ...

@wesleycho dari tim Angular UI Bootstrap tampaknya sangat menentang vm :
https://github.com/angular/angular.js/issues/10007#issuecomment -166707284

+1 untuk $ctrl

@shairez Saya sepenuhnya berbagi poin Anda tentang mengadakan konvensi, saya seorang Arsitek Freelance dengan puluhan proyek di belakang, konvensi vm banyak membantu, tetapi saya masih memiliki beberapa masalah. Ternyata ada orang yang menolak untuk menggunakannya. Mungkin resistensinya harus lebih rendah jika konvensi ini berasal dari Angular itu sendiri, tetapi saya yakin jika namanya $ctrl mereka akan menerimanya apa adanya, tanpa perlawanan apa pun. $ctrl langsung saja.

Jadi suara masuk dan tampilannya seperti ini:

$comp  4
$cmp   2
$ctrl  19
$vm    3
$this  3
$ctx   2
$vc    1

Favorit yang jelas adalah $ctrl . Selain menjadi populer, ia melewati kriteria yang diposting di bagian atas edisi ini. Selain itu tidak memperkenalkan konsep yang sangat baru. Hal yang dimaksud sebenarnya adalah pengontrol (komponen/pengendali arahan) yang sudah dipahami oleh pengembang Angular dan sama seperti beberapa pengembang telah terbiasa menggunakan vm dalam arahan mereka, tidak akan lama bagi pengembang untuk kapas ke default ini.

Luar biasa, $ctrl itu!

Masalah untuk 1.4 dan yang lebih rendah - tidak dapat menyebutkan 'sebagai nama' dengan $ctrl

Kekhawatiran lain yang ingin saya sampaikan adalah bahwa dalam angular 1.4 dan yang lebih rendah, kita tidak dapat benar-benar menggunakan "sebagai nama" yang dimulai dengan tanda $ .

Ini memberikan kesalahan berikut:
Error: [$controller:ctrlfmt] Badly formed controller string

Beberapa perusahaan mengalami kesulitan untuk mengupgrade ke versi terbaru, dan dapat memakan waktu beberapa bulan.

Mereka masih ingin mengikuti konvensi, sehingga proses peningkatan mereka akan lebih sederhana di masa depan.

Bagi mereka, beralih dari vm ke $ctrl tidak mungkin.

Bagaimana menurutmu? ada saran?

mungkin bermigrasi secara bertahap:
mulai dengan mengonversi vm menjadi ctrl
ketika 1.5 dirilis, "upgrade" ctrl ke $ctrl

Cara lain yang mungkin - meskipun verbose - adalah menghasilkan alias controllerAs di runtime, memeriksa angular.version . sesuatu seperti:

 angular
        .module('github')
        .directive('issueThread', issueThread);

    /* <strong i="14">@ngInject</strong> */
    function issueThread () {
        // this can be required as a module if using some module loader
        // or - another way is using global on angular namespace (i know it a bad practice - hwoever just to indicate reuse of this check 
        let prefix = angular.version.minor === 5 ? '$' : '';
        let controllerAs = prefix + 'ctrl';
        // with template strings
        var controllerAs = `${prefix}ctrl`;

        var directive = {
            controller: controller,
            restrict: 'E'
        };
        return directive;

        function controller() {
        }
    }

@orizens Bagaimana dengan template?

@shairez Uhmmm masuk akal, simbol $ dimaksudkan hanya untuk internal sudut ... mungkin memiliki semacam kompatibilitas maju di minor berikutnya bagus.

@drpicox Anda ada benarnya :).
Sekali lagi, satu solusi yang dapat saya pikirkan (peretasan ...), adalah, "ganti" ctrl dengan $ctrl di template di runtime/build. Itu dapat dicapai dengan mudah jika proyek dibangun dengan es6 dan modul. jika tidak, ini adalah tugas untuk gulp/grunt/npm pada waktu build.

Mengapa tidak menggunakan controllerAs saja?
Ini bukan solusi yang ideal (dan memang kita mungkin perlu merevisi RegExp yang mengekstrak pengenal dari string pengontrol (jika ada), tetapi menggunakan controllerAs kompatibel ke belakang dan ke depan :)

(Jika ada yang ingin mencoba memperbarui pengidentifikasi yang mengekstrak RegExp, itu ada di sana.)

@gkalpak itu poin yang bagus, bergerak maju mempromosikan penggunaan properti controllerAs itu bagus karena semakin banyak orang juga akan bertransisi untuk menggunakan komponen di versi 1.4 dan yang lebih rendah, saya percaya.

Tapi, saya pikir mungkin akan membingungkan jika kita mulai mengajari orang tentang $ctrl dan dalam beberapa kasus itu berhasil dan dalam beberapa kasus tidak.

Jadi kompatibilitas ke depan (tidak yakin bagaimana), adalah ide bagus!

@shairez apakah Anda (dapatkah Anda) membuat masalah baru untuk melacak ini?

Saya membuat #13736 yang memungkinkan $ dalam pengenal, saat menggunakan <ctrl> as <identifier> .
Pengidentifikasi yang diizinkan tetap berbeda antara controller: '... as ...' vs controllerAs: '...' .

Yang mengatakan, saya tidak yakin bahwa mempromosikan controller: '... as $ctrl' adalah cara yang baik untuk mengikuti konvensi. Jauh lebih sulit untuk meningkatkan controller: '... as $ctrl' daripada controller: '...', controllerAs: '$ctrl' .

Terima kasih @gkalpak - Saya setuju bahwa kita mungkin harus mendorong penggunaan properti controllerAs daripada controller sebagai sintaks.

Satu hal adalah: dokumentasi komponen mengatakan: "Definisi komponen sangat sederhana dan tidak memerlukan banyak kerumitan di balik mendefinisikan arahan umum".
Satu lagi: pengontrol dalam arahan hanya diperlukan jika Anda membuat arahan kompleks yang berbicara satu sama lain. Kalau tidak, fungsi tautan lebih dari cukup (mis. "gunakan pengontrol ketika Anda ingin mengekspos API ke arahan lain. Jika tidak, gunakan tautan" dalam arahan Panduan Pengembang, dan dari pengalaman saya arahan menerapkan fungsionalitas yang sama dengan tautan alih-alih pengontrol yang digunakan beberapa ratus kali di ng-repeat jauh lebih cepat.
Jadi...
Saya tidak menemukan di Komponen (arahan "sederhana") cara melakukan "sederhana" (fungsi tautan), hanya yang berat (pengontrol).
Apakah saya melewatkan sesuatu?
Terima kasih untuk penjelasannya.

@frfancha - peningkatan kinerja karena tidak harus menggunakan $injector untuk membuat instance pengontrol, bukan? Mungkin Anda memiliki beberapa pengukuran kinerja yang dapat Anda berikan?

Gagasan pembantu komponen adalah untuk membuatnya lebih sederhana (dalam arti LOC) untuk menulis arahan tipe komponen (isolasi, elemen); dan lebih mudah untuk menulis kode yang lebih sesuai dengan bagaimana hal-hal dilakukan di Angular 2.

Jika ada masalah kinerja di aplikasi tertentu, maka akan cukup mudah untuk mengonversi arahan komponen untuk menggunakan helper directive yang lebih umum.

Saya pikir kita perlu melihat dokumen API dan panduan pengembang lainnya untuk memastikan mereka konsisten dengan helper component() yang baru.

@petebacondarwin Pada awalnya kami menulis semua arahan kami dengan pengontrol, hanya karena ditunjukkan seperti ini di tutorial pertama yang kami ikuti.
Hanya setelah kami menemukan bahwa butuh sekitar 15 detik untuk "membuka" halaman tertentu dengan 1000 arahan (5 dengan "baris" dalam ng-repeat x 200), kami membaca lebih lanjut tentang arahan dan memahami bahwa pengontrol tidak berguna jika Anda tidak " berbicara" di antara arahan (dengan meminta pengontrol yang lain). Setelah "menulis ulang" semua dengan fungsi tautan alih-alih pengontrol (menulis ulang adalah kata besar karena hanya menyalin/menempel kode di tautan alih-alih pengontrol), waktu untuk menampilkan halaman adalah 8 detik.
Perhatikan bahwa ini adalah tindakan firefox, saat itu kami tidak menggunakan Chrome. Sekarang kami menggunakannya dan saya memperkirakan waktu di Chrome menjadi yang ketiga dari Firefox (dan penggunaan memori yang keempat (dan tanpa kebocoran memori, yang hebat, di Firefox aplikasi kami dikenal "lambat di sore hari)).
Kami umumnya sangat senang dengan angular (kami telah mengonversi semua aplikasi entri data kami dari aplikasi jendela Smalltalk ke WEB API + angular (jika Anda tertarik untuk melihatnya?? Saya kadang-kadang di London).
Tapi saya terkejut dengan pilihan pengontrol untuk mendukung "cara sederhana" untuk melakukan arahan

terima kasih @gkalpak !

@petebacondarwin masalah terpisah tidak relevan lagi kan? (Karena PR)

Saya setuju (seperti yang saya tulis), kita harus mendidik orang untuk menggunakan properti controllerAs, tetapi hanya menyebutkannya karena saya memperkirakan orang akan mengalaminya.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat