Mengapa replace=true
ataureplace=false
tidak berdampak pada kode di bawah ini?
Mengapa "beberapa konten yang ada" tidak ditampilkan saat replace = false?
Atau dengan lebih sederhana, dapatkah Anda dengan ramah menjelaskan apa saja replace=true/false
fitur dalam arahan dan bagaimana cara menggunakannya?
Contoh
JS / Sudut:
<script>
angular.module('scopes', [])
.controller('Ctrl', function($scope) {
$scope.title = "hello";
})
.directive('myDir', function() {
return {
restrict: 'E',
replace: true,
template: '<div>{{title}}</div>'
};
});
</script>
HTML:
<div ng-controller="Ctrl">
<my-dir><h3>some existing content</h3></my-dir>
</div>
Lihat di Plunker di sini:
angularjs
angularjs-directive
Kaya Toast
sumber
sumber
Jawaban:
Jika sudah,
replace: true
Anda mendapatkan potongan DOM berikut:<div ng-controller="Ctrl" class="ng-scope"> <div class="ng-binding">hello</div> </div>
sedangkan, dengan
replace: false
Anda dapatkan ini:<div ng-controller="Ctrl" class="ng-scope"> <my-dir> <div class="ng-binding">hello</div> </my-dir> </div>
Jadi
replace
properti dalam direktif merujuk pada apakah elemen yang direktif tersebut diterapkan (<my-dir>
dalam kasus itu) harus tetap (replace: false
) dan template direktif harus ditambahkan sebagai anaknya,ATAU
elemen yang direktif diterapkan harus diganti (
replace: true
) dengan template direktif itu.Dalam kedua kasus elemen (di mana arahan diterapkan) anak-anak akan hilang. Jika Anda ingin mempertahankan konten asli / turunan dari elemen tersebut, Anda harus mentranslasikannya. Arahan berikut akan melakukannya:
.directive('myDir', function() { return { restrict: 'E', replace: false, transclude: true, template: '<div>{{title}}<div ng-transclude></div></div>' }; });
Dalam hal ini jika dalam template direktif Anda memiliki elemen (atau elemen) dengan atribut
ng-transclude
, isinya akan diganti dengan konten asli elemen (yang direktif diterapkan).Lihat contoh translusi http://plnkr.co/edit/2DJQydBjgwj9vExLn3Ik?p=preview
Lihat ini untuk membaca lebih lanjut tentang translusi.
sumber
replace
sudah tidak digunakan lagi sejak AngularJS v1.3 ( tautan ).replace:true
sudah ditinggalkanDari Dokumen:
- AngularJS Comprehensive Directive API
Dari GitHub:
- AngularJS Masalah # 7636
Memperbarui
Masalah dengan replace: true
transclude: element
di root replace template dapat memiliki efek yang tidak terdugaUntuk informasi lebih lanjut, lihat
replace:true
sumber
remove-host
solusi stackoverflow.com/questions/34280475/… jika Anda mengetahui tentang pengaktifanreplace: true
di A2, beri tahu kami.