Pertanyaan sederhana: Bagaimana cara menetapkan nilai lingkup dalam html, untuk dibaca oleh pengontrol saya?
var app = angular.module('app', []);
app.controller('MyController', function($scope) {
console.log($scope.myVar);
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app='app'>
<div ng-controller="MyController" app-myVar="test">
{{myVar}}
</div>
</div>
JSFiddle: http://jsfiddle.net/ncapito/YdQcX/
my-var="foo"
saat memanggilnya. Perhatikan penggunaan tanda hubung vs. camelCase. Catatan: difoo
sini dievaluasi , jika Anda tidak ingin penggunaan '@' dalam definisi cakupan untuk mengakses nilai atribut.Jawaban:
ng-init
tidak berfungsi saat Anda menetapkan variabel di dalam loop. Menggunakan{{myVariable=whatever;""}}
Trailing
""
menghentikan ekspresi Angular yang dievaluasi ke teks apa pun.Kemudian Anda cukup memanggil
{{myVariable}}
untuk mengeluarkan nilai variabel Anda.Saya menemukan ini sangat berguna ketika melakukan iterasi beberapa array bersarang dan saya ingin menyimpan info iterasi saya saat ini dalam satu variabel daripada menanyakannya beberapa kali.
sumber
{{}}
hanya untuk mengeluarkan variabel tunggal, bukan untuk menetapkan variabel. Saya akan mengatakan stackoverflow.com/a/16799763/814160 lebih benar (lebih sedikit kode JS dalam tampilan).ngInit
dapat membantu untuk menginisialisasi variabel.contoh jsfiddle
sumber
Buat perintah yang disebut
myVar
dengandan menyebutnya seperti ini:
Perhatikan secara khusus referensi kasus unta dalam arahan ke nama tag dengan tanda hubung.
Untuk informasi lebih lanjut, lihat "Memahami Transklusi dan Cakupan" di sini: - http://docs.angularjs.org/guide/directive
Berikut adalah Fiddle yang menunjukkan bagaimana Anda dapat menyalin nilai dari atribut ke variabel cakupan dengan berbagai cara berbeda dalam sebuah perintah.
sumber
var-nick='my' var-nick2='test'
. Kecuali jika Anda dapat memikirkan cara untuk mengimplementasikannya dengan arahan yang akan saya gunakanng-init
scope: {varNick: '@', varNick2: '@'}
Anda dapat mengatur nilai dari html seperti ini. Saya rasa belum ada solusi langsung dari sudut.
sumber
<div style="display: none">
namun.Anda dapat menggunakan
ng-init
seperti yang ditunjukkan di bawah inilalu gunakan variabel cakupan lokal di bagian lain:
sumber
Variabel diinisialisasi setelah pengontrol sehingga Anda perlu mengawasinya dan ketika tidak diinisialisasi, gunakan.
sumber
Saya suka jawabannya tetapi saya pikir akan lebih baik jika Anda membuat fungsi cakupan global yang memungkinkan Anda mengatur variabel cakupan yang diperlukan.
Jadi di buat globalController
dan kemudian dalam file html Anda, sebut saja
Ini kemudian akan memungkinkan Anda untuk menggunakan $ scope.myVar di pengontrol Anda masing-masing
sumber
Jika Anda tidak berada dalam satu lingkaran, Anda bisa menggunakan ng-init lain yang bisa Anda gunakan
yang "" tidak menampilkan var Anda
sumber