isReplyFormOpen
참일 때만 표시하고 싶은 메시지에 답장하는 양식이 있는데 , 답장 버튼을 클릭 할 때마다 양식 표시 여부를 전환하고 싶습니다. 어떻게 할 수 있습니까?
답변
ng-click 이벤트에서 “isReplyFormOpen”값을 토글하면됩니다.
<a ng-click="isReplyFormOpen = !isReplyFormOpen">Reply</a>
<div ng-show="isReplyFormOpen" id="replyForm">
</div>
답변
나는 기본적으로 그것을 해결 하지 -ing isReplyFormOpen
가 클릭 할 때마다 값을 :
<a ng-click="isReplyFormOpen = !isReplyFormOpen">Reply</a>
<div ng-init="isReplyFormOpen = false" ng-show="isReplyFormOpen" id="replyForm">
<!-- Form -->
</div>
답변
여기를 클릭하면 다음과 같습니다.
ng-click="orderReverse = orderReverse ? false : true"
답변
컨트롤러 A에 버튼이 있고 컨트롤러 B에 표시하려는 요소가있는 경우 컨트롤러 전체에서 범위 변수에 액세스하려면 점 표기법을 사용해야 할 수 있습니다.
예를 들어 다음은 작동 하지 않습니다 .
<div ng-controller="ControllerA">
<a ng-click="isReplyFormOpen = !isReplyFormOpen">Reply</a>
<div ng-controller="ControllerB">
<div ng-show="isReplyFormOpen" id="replyForm">
</div>
</div>
</div>
이 문제를 해결하려면 전역 변수 (예 : 컨트롤러 A 또는 기본 컨트롤러에서)를 만듭니다.
.controller('ControllerA', function ($scope) {
$scope.global = {};
}
그런 다음 클릭에 ‘전역’접두사를 추가하고 변수를 표시합니다.
<div ng-controller="ControllerA">
<a ng-click="global.isReplyFormOpen = !global.isReplyFormOpen">Reply</a>
<div ng-controller="ControllerB">
<div ng-show="global.isReplyFormOpen" id="replyForm">
</div>
</div>
</div>
자세한 내용 들어, 체크 아웃 각도-UI 문서의 중첩 미국 및 중첩보기 , 비디오를보고 , 또는 읽기 이해 범위를 .
답변
다음은 ngclick 및 ng-if 지시문을 사용하는 예입니다.
참고 : ng-if는 DOM에서 요소를 제거하지만 ng-hide는 요소의 표시를 숨 깁니다.
<!-- <input type="checkbox" ng-model="hideShow" ng-init="hideShow = false"></input> -->
<input type = "button" value = "Add Book"ng-click="hideShow=(hideShow ? false : true)"> </input>
<div ng-app = "mainApp" ng-controller = "bookController" ng-if="hideShow">
Enter book name: <input type = "text" ng-model = "book.name"><br>
Enter book category: <input type = "text" ng-model = "book.category"><br>
Enter book price: <input type = "text" ng-model = "book.price"><br>
Enter book author: <input type = "text" ng-model = "book.author"><br>
You are entering book: {{book.bookDetails()}}
</div>
<script>
var mainApp = angular.module("mainApp", []);
mainApp.controller('bookController', function($scope) {
$scope.book = {
name: "",
category: "",
price:"",
author: "",
bookDetails: function() {
var bookObject;
bookObject = $scope.book;
return "Book name: " + bookObject.name + '\n' + "Book category: " + bookObject.category + " \n" + "Book price: " + bookObject.price + " \n" + "Book Author: " + bookObject.author;
}
};
});
</script>
답변
하위 메뉴가있는 여러 메뉴가있는 경우 아래 솔루션으로 이동할 수 있습니다.
HTML
<ul class="sidebar-menu" id="nav-accordion">
<li class="sub-menu">
<a href="" ng-click="hasSubMenu('dashboard')">
<i class="fa fa-book"></i>
<span>Dashboard</span>
<i class="fa fa-angle-right pull-right"></i>
</a>
<ul class="sub" ng-show="showDash">
<li><a ng-class="{ active: isActive('/dashboard/loan')}" href="#/dashboard/loan">Loan</a></li>
<li><a ng-class="{ active: isActive('/dashboard/recovery')}" href="#/dashboard/recovery">Recovery</a></li>
</ul>
</li>
<li class="sub-menu">
<a href="" ng-click="hasSubMenu('customerCare')">
<i class="fa fa-book"></i>
<span>Customer Care</span>
<i class="fa fa-angle-right pull-right"></i>
</a>
<ul class="sub" ng-show="showCC">
<li><a ng-class="{ active: isActive('/customerCare/eligibility')}" href="#/CC/eligibility">Eligibility</a></li>
<li><a ng-class="{ active: isActive('/customerCare/transaction')}" href="#/CC/transaction">Transaction</a></li>
</ul>
</li>
</ul>
내가 먼저 호출 한 두 가지 함수는 ng-click = hasSubMenu ( ‘dashboard’)입니다. 이 기능은 메뉴를 토글하는 데 사용되며 아래 코드에서 설명합니다. ng-class = “{active : isActive ( ‘/ customerCare / transaction’)}는 현재 메뉴 항목에 활성 클래스를 추가합니다.
이제 내 앱에서 몇 가지 기능을 정의했습니다.
먼저 변수와 함수를 선언하는 데 사용되는 종속성 $ rootScope를 추가합니다. $ roootScope에 대한 자세한 내용은 https://docs.angularjs.org/api/ng/service/ $ rootScope 링크를 참조하십시오.
내 앱 파일은 다음과 같습니다.
$rootScope.isActive = function (viewLocation) {
return viewLocation === $location.path();
};
위의 기능은 현재 메뉴 항목에 활성 클래스를 추가하는 데 사용됩니다.
$rootScope.showDash = false;
$rootScope.showCC = false;
var location = $location.url().split('/');
if(location[1] == 'customerCare'){
$rootScope.showCC = true;
}
else if(location[1]=='dashboard'){
$rootScope.showDash = true;
}
$rootScope.hasSubMenu = function(menuType){
if(menuType=='dashboard'){
$rootScope.showCC = false;
$rootScope.showDash = $rootScope.showDash === false ? true: false;
}
else if(menuType=='customerCare'){
$rootScope.showDash = false;
$rootScope.showCC = $rootScope.showCC === false ? true: false;
}
}
기본적으로 $ rootScope.showDash 및 $ rootScope.showCC는 false로 설정됩니다. 페이지가 처음로드 될 때 메뉴가 닫히도록 설정합니다. 두 개 이상의 하위 메뉴가있는 경우 그에 따라 추가하십시오.
hasSubMenu () 함수는 메뉴 사이를 전환하는 데 작동합니다. 작은 조건을 추가했습니다
if(location[1] == 'customerCare'){
$rootScope.showCC = true;
}
else if(location[1]=='dashboard'){
$rootScope.showDash = true;
}
선택한 메뉴 항목에 따라 페이지를 다시로드 한 후에도 하위 메뉴가 열린 상태로 유지됩니다.
내 페이지를 다음과 같이 정의했습니다.
$routeProvider
.when('/dasboard/loan', {
controller: 'LoanController',
templateUrl: './views/loan/view.html',
controllerAs: 'vm'
})
하위 메뉴가없는 단일 메뉴가있는 경우에만 isActive () 함수를 사용할 수 있습니다. 요구 사항에 따라 코드를 수정할 수 있습니다. 이것이 도움이되기를 바랍니다. 좋은 하루 되세요 🙂