de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 waqas
waqas
Question

AngularJS - Cara menggunakan ng-jika tanpa elemen HTML

Apakah ada cara untuk memberitahu AngularJS untuk tidak menampilkan bagian atas elemen HTML yang memiliki ng-jika direktif. Aku ingin sudut untuk menampilkan konten anak saja.

Sudut Kode:

    <div ng-if="checked" id="div1">
      <div id="div2">ABC</div>
      <div id="div3">KLM</div>
      <div id="div4">PQR</div>
   </div>

Diberikan HTML:

   <div id="div1"> 
      <div id="div2">ABC</div>
      <div id="div3">KLM</div>
      <div id="div4">PQR</div>
   </div>

Apa yang saya inginkan:

   <div id="div2">ABC</div>
   <div id="div3">KLM</div>
   <div id="div4">PQR</div>

Berikut ini adalah biola.

. Saya tidak ingin #div1 dalam HTML. Aku hanya ingin #div2,3,4 jika diperiksa adalah benar.

Solusi yang mungkin dapat menambahkan ng-jika semua elemen anak tapi aku tidak ingin melakukan ini.

56 2013-11-01T05:38:14+00:00 6
Roham Rafii
Roham Rafii
Pertanyaan edit 4 Oktober 2018 в 12:18
Pemrograman
javascript
angularjs
angularjs-ng-if
Mark Amery
Mark Amery
28 Juni 2015 в 2:44
2015-06-28T14:44:58+00:00
Lebih
Sumber
Sunting
#22684882

Ada's saat ini tercatat sepasang arahan, ng-jika-start dan ng-jika-end, yang dapat anda gunakan untuk ini. Mereka berperilaku sama seperti yang didokumentasikan ng-repeat-start danng-repeat-end arahan, dan anda bisa melihat unit tes untuk them jika anda suka.

Misalnya, diberikan kode berikut:

<ul>
  <li ng-if-start="true">a</li>
  <li>b</li>
  <li>c</li>
  <li ng-if-end>d</li>
  <li ng-if-start="false">1</li>
  <li>2</li>
  <li>3</li>
  <li ng-if-end>4</li>
</ul>

pertama empat li akan ditampilkan dan final fourli akan disembunyikan.

Berikut ini's contoh hidup di CodePen: http://codepen.io/anon/pen/PqEJYV

Ada juga ng-show-start dan ng-show-end arahan yang bekerja persis seperti yang anda harapkan mereka.

Mark Amery
Mark Amery
Jawaban edit 11 Agustus 2015 в 9:11
51
0
 seanhodges
seanhodges
24 Februari 2015 в 12:44
2015-02-24T12:44:54+00:00
Lebih
Sumber
Sunting
#22684879

Jika anda senang untuk membuat custom direktif, anda dapat menerapkan ng-jika untuk anak-anak pemrograman dan meratakan DOM dalam proses:

Direktif Kode:

.directive('ngBatchIf', function() {
    return {
        scope: {},
        compile: function (elm, attrs) {
            // After flattening, Angular will still have the first element
            // bound to the old scope, so we create a temporary marker 
            // to store it
            elm.prepend('<div style="display: none"></div>');

            // Flatten (unwrap) the parent
            var children = elm.children();
            elm.replaceWith(children);

            // Add the ng-if to the children
            children.attr('ng-if', attrs.ngBatchIf);

            return {
                post: function postLink(scope, elm) {
                    // Now remove the temporary marker
                    elm.remove();
                }
            }
        }
    }
})

Sudut Kode:

<div id="div1" ng-batch-if="checked">
    <div id="div2">ABC</div>
    <div id="div3">KLM</div>
    <div id="div4">PQR</div>
</div>

Diberikan HTML:

<div id="div2" ng-if="checked">ABC</div>
<div id="div3" ng-if="checked">KLM</div>
<div id="div4" ng-if="checked">PQR</div>

Biola:

7
0
Amir Popovich
Amir Popovich
12 Juni 2015 в 4:45
2015-06-12T04:45:10+00:00
Lebih
Sumber
Sunting
#22684881

Berikut ini's Sudut 1.21 solusi:

HTML:

<div ng-app="app" ng-controller="ctrl">
    <div ng-iff="checked" id="div1">
        <div id="div2">ABC</div>
        <div id="div3">KLM</div>
        <div id="div4">PQR</div>
    </div>
    <button ng-click="toggleCheck()">Toggle Check</button>
</div>

JAVASCRIPT:

angular.module('app', []).
controller('ctrl', function ($scope) {
    $scope.checked = true;

    $scope.toggleCheck = function () {
        $scope.checked = !$scope.checked;
    };
}).
directive('ngIff', function ($compile) {
    return {
        compile: function compile(tElement, tAttrs, transclude) {
            return {
                pre: function preLink(scope, iElement, iAttrs, controller) {
                    var bindingElem = iElement.attr('ng-iff');
                    var children = iElement.children();

                    angular.forEach(children,function(c){
                        angular.element(c).attr('ng-if',bindingElem);
                    });

                    $compile(children)(scope, function(newElem){
                        iElement.replaceWith(newElem);
                    });
                }
            };
        }
    };
});

JSFIDDLE.

0
0
 VinEzhu
VinEzhu
16 Juni 2014 в 8:30
2014-06-16T08:30:09+00:00
Lebih
Sumber
Sunting
#22684878

Saya tidak mengerti mengapa anda tidak ingin menggunakan div induk, tetapi ini akan menjadi solusi yang baik jika anda memiliki +20 divs:

HTML

   <div ng-repeat="div in divs" ng-if="checked" id="{{div.name}}">{{div.content}}</div>

JS

app.controller('myCtrl', function($scope) {
    $scope.checked = true;
    $scope.divs = {
         {'name': 'div2', content:'ABC'},
         {'name': 'div3', content:'KLM'},
         {'name': 'div4', content:'PQR'}
    }
});
 VinEzhu
VinEzhu
Jawaban edit 16 Juni 2014 в 8:36
-1
0
Aditya Singh
Aditya Singh
1 November 2013 в 5:48
2013-11-01T05:48:38+00:00
Lebih
Sumber
Sunting
#22684877

Cobalah cara ini:-

div1 adalah wadah induk untuk div2,div3,div4, jika anda don't ingin div1 dalam output html menggunakan ini:-

<div ng-app="App">Click me:
    <input type="checkbox" ng-model="checked" ng-init="checked=true" />
    <br/>Show when checked:
    <div class="div2" ng-if="checked">ABC</div>
    <div class="div3" ng-if="checked">KLM</div>
    <div class="div4" ng-if="checked">PQR</div>
</div>

EDIT:-

Menggunakan angular js dan jQuery:-http://jsfiddle.net/adiioo7/9mgTS/3/

Menetapkan sebuah kelas umum (contoh myClass) untuk semua elemen yang berkaitan dengan kelompok itu.

JS:-

angular.module('App', []);

function myController($scope) {
    $scope.change = function () {
        angular.element(".myClass").toggle();
    };
}

HTML:-

<div ng-app="App" ng-Controller="myController">Click me:
    <input type="checkbox" ng-change="change()" ng-model="checked" ng-init="checked=true" />
    <br/>Show when checked:
    <div id="div2" class="myClass">ABC</div>
    <div id="div3" class="myClass">KLM</div>
    <div id="div4" class="myClass">PQR</div>
</div>
Aditya Singh
Aditya Singh
Jawaban edit 1 November 2013 в 3:38
-2
0
 Jay
Jay
12 Juni 2015 в 4:13
2015-06-12T04:13:41+00:00
Lebih
Sumber
Sunting
#22684880

Tampaknya menjadi sebuah pertanyaan lama tapi aku punya kebutuhan yang sama

<div ng-if="checked" id="div1">
      <div id="div2">ABC</div>
      <div id="div3">KLM</div>
      <div id="div4">PQR</div>
</div>

Saya berhasil seperti ini

<mytag ng-if="checked" id="div1">
      <div id="div2">ABC</div>
      <div id="div3">KLM</div>
      <div id="div4">PQR</div>
</mytag>

dimana mytag hanya nama apapun yang bukan merupakan elemen html asalkan tidak mengganggu tata letak, ini bekerja untuk saya

-2
0
Related communities 2
JavaScript Indonesia
JavaScript Indonesia
14 533 pengguna
Grup JavaScript yang membahas JavaScript, framework JS, dan Node JS secara universal. Cek Pinned Message untuk keterangan lebih lanjut. Komunitas ReactJS: https://t.me/react_idn
Buka telegram
Angular Indonesia
Angular Indonesia
3 519 pengguna
Framework web development aplikasi web dan mobile https://angular.io/ Facebook Group https://www.facebook.com/groups/462764390497214/ Github Repo Angular ID https://github.com/angular-indonesia Medium Angular Indonesia https://medium.com/angularid
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Asilbek Qadamboyev
Terdaftar 1 hari yang lalu
2
Akshit Mehta
Terdaftar 4 hari yang lalu
3
me you
Terdaftar 1 minggu yang lalu
4
Никита иванов
Terdaftar 1 minggu yang lalu
5
Alex1976G_06
Terdaftar 1 minggu yang lalu
ID
KO
RU
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi