亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 AngularJS 模態模板中顯示更多和隱藏詳細信息

在 AngularJS 模態模板中顯示更多和隱藏詳細信息

慕森卡 2023-07-06 19:43:23
我有一個 AngularJS 模態模板,我可以在其中投影范圍內的響應。模板看起來像這樣:<div class="modal-body" id="modal-body"><uib-accordion close-others="true">    <div uib-accordion-group class="mt-1" ng-repeat="x in data.details" heading="{{data.displayName}}">        <pre>{{ x|json:4 }}</pre>    </div></uib-accordion>我想首先顯示一個包含最重要的“x”字段的表格,然后給出一個“showMore”字段,單擊按鈕后,我們將顯示完整的 JSON。這里的按鈕用作顯示重要詳細信息(表)或完整詳細信息(Json 響應)的切換,我遵循較少角度的方式,但使用 Javascript 和 HTML。下面是這個實現:<div class="modal-body" id="modal-body"><uib-accordion close-others="true">    <div uib-accordion-group class="mt-1" ng-repeat="x in data.details" heading="{{data.displayName}}">        <span id="dots"> <table>..</table> </span>        <span id="more"> <pre>{{ x|json:4 }}</pre> </span>        <button onclick="myFunction()" id="myBtn">Read more</button>    </div></uib-accordion><script type="text/javascript">    function myFunction() {        var dots = document.getElementById("dots");        var moreText = document.getElementById("more");        var btnText = document.getElementById("myBtn");        if (dots.style.display === "none") {            dots.style.display = "inline";            btnText.innerHTML = "Read more";            moreText.style.display = "none";        } else {            dots.style.display = "none";            btnText.innerHTML = "Read less";            moreText.style.display = "inline";        }}</script>我怎么能不使用Javascript來滿足我的需求呢?我想實現一種更 Angular 的方式,我是 Angular 的新手,請注意我的簡潔。提前致謝。
查看完整描述

1 回答

?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

您可以直接從 Angular 獲得一些選擇。核心原則是使用組件中的變量并檢查它以及在模板中進行更新。


第一個解決方案,模板:


<div uib-accordion-group class="mt-1" ng-repeat="x in data.details" heading="{{data.displayName}}">

    <span id="dots" [hidden]="! showTable"> <table>..</table> </span>

    <span id="more" [hidden]="showTable"> <pre>{{ x|json:4 }}</pre> </span>

    <button (click)="toggleTableVisibility()" id="myBtn">Read more</button>

</div>

并且在組件中


showTable = true;


function toggleTableVisibility() {

    this.showTable = ! this.showTable;

}

第二種解決方案,使用ngIf,僅模板發生變化


<div uib-accordion-group class="mt-1" ng-repeat="x in data.details" heading="{{data.displayName}}">

    <span id="dots" *ngIf="showTable"> <table>..</table> </span>

    <span id="more" *ngIf="! showTable"> <pre>{{ x|json:4 }}</pre> </span>

    <button (click)="toggleTableVisibility()" id="myBtn">Read more</button>

</div>

我沒有對此進行測試,因此可能存在拼寫錯誤/解析錯誤,但這就是要點。兩者之間的區別在于 with[hidden]內容被隱藏display: none,而 withngIf內容只是從 DOM 中刪除。


編輯:修改我的答案以反映添加切換按鈕的問題的更新。


查看完整回答
反對 回復 2023-07-06
  • 1 回答
  • 0 關注
  • 170 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號