如何将 Angular-UI 元素 属性 更改为 Jquery
How to change Angular-UI element property with Jquery
我正在尝试制作一个顶部有两个按钮的简单手风琴:一个按钮打开每个面板,一个按钮折叠它们。
我正在尝试使用 jQuery 的 prop
方法来更改每个 uib-accordion 元素上的 is-open
属性,但是当我单击时没有任何反应在任一按钮上。
<div ng-controller="AccordionController">
<p>
<button type="button" class="btn btn-default btn-sm" ng-click="openAll()">Open All</button>
<button type="button" class="btn btn-default btn-sm" ng-click="collapseAll()">Collapse All</button>
</p>
<uib-accordion close-others="false">
<uib-accordion-group class="accordionGroup" ng-repeat="xmlResult in xmlResults" is-open="false">
<uib-accordion-heading>
//heading...
</uib-accordion-heading>
//content...
</uib-accordion-group>
</uib-accordion>
</div>
这是我的控制器
angular.module("ResultsTreeViewer").controller("AccordionController", function ($scope) {
$scope.openAll = function () {
$(".accordionGroup").prop("is-open", true);
};
$scope.collapseAll = function () {
$(".accordionGroup").prop("is-open", false);
}
});
我喜欢 Angular 唯一的解决方案,但这不是必需的。我只是想让它工作。
我会说不要在控制器内部使用 jQuery
和 Angular。
而是在每个 accordion
记录中包含 isOpen
变量,然后通过调用单个函数 actionAccordion
函数使其成为 true
& false
(有意义以 angular 的方式拥有它。
标记
<p>
<button type="button" class="btn btn-default btn-sm" ng-click="actionAccordion(true)">Open All</button>
<button type="button" class="btn btn-default btn-sm" ng-click="actionAccordion(false)">Collapse All</button>
</p>
<uib-accordion close-others="false">
<uib-accordion-group class="accordionGroup" ng-repeat="xmlResult in xmlResults"
is-open="xmlResult.isOpen">
<uib-accordion-heading>
//heading...
</uib-accordion-heading>
//content...
</uib-accordion-group>
</uib-accordion>
代码
$scope.actionAccordion = function (flag) {
angular.forEach($scope.xmlResults, function(xmlResult){
xmlResults.isOpen = flag;
})
};
我正在尝试制作一个顶部有两个按钮的简单手风琴:一个按钮打开每个面板,一个按钮折叠它们。
我正在尝试使用 jQuery 的 prop
方法来更改每个 uib-accordion 元素上的 is-open
属性,但是当我单击时没有任何反应在任一按钮上。
<div ng-controller="AccordionController">
<p>
<button type="button" class="btn btn-default btn-sm" ng-click="openAll()">Open All</button>
<button type="button" class="btn btn-default btn-sm" ng-click="collapseAll()">Collapse All</button>
</p>
<uib-accordion close-others="false">
<uib-accordion-group class="accordionGroup" ng-repeat="xmlResult in xmlResults" is-open="false">
<uib-accordion-heading>
//heading...
</uib-accordion-heading>
//content...
</uib-accordion-group>
</uib-accordion>
</div>
这是我的控制器
angular.module("ResultsTreeViewer").controller("AccordionController", function ($scope) {
$scope.openAll = function () {
$(".accordionGroup").prop("is-open", true);
};
$scope.collapseAll = function () {
$(".accordionGroup").prop("is-open", false);
}
});
我喜欢 Angular 唯一的解决方案,但这不是必需的。我只是想让它工作。
我会说不要在控制器内部使用 jQuery
和 Angular。
而是在每个 accordion
记录中包含 isOpen
变量,然后通过调用单个函数 actionAccordion
函数使其成为 true
& false
(有意义以 angular 的方式拥有它。
标记
<p>
<button type="button" class="btn btn-default btn-sm" ng-click="actionAccordion(true)">Open All</button>
<button type="button" class="btn btn-default btn-sm" ng-click="actionAccordion(false)">Collapse All</button>
</p>
<uib-accordion close-others="false">
<uib-accordion-group class="accordionGroup" ng-repeat="xmlResult in xmlResults"
is-open="xmlResult.isOpen">
<uib-accordion-heading>
//heading...
</uib-accordion-heading>
//content...
</uib-accordion-group>
</uib-accordion>
代码
$scope.actionAccordion = function (flag) {
angular.forEach($scope.xmlResults, function(xmlResult){
xmlResults.isOpen = flag;
})
};