angularjs – 控制isOpen in angular ui bootstrap
发布时间:2020-12-17 17:39:09 所属栏目:安全 来源:网络整理
导读:我想在angualr ui bootstrap accordion指令中使用isOpen属性,这样就可以打开手风琴中第一个ng-repeat的第一个元素.我尝试过一些没有运气的事情.任何人都可以就此提出建议吗? //html div ng-show="accordionCtrl.isNotString(value);" class="accordionConta
|
我想在angualr ui bootstrap accordion指令中使用isOpen属性,这样就可以打开手风琴中第一个ng-repeat的第一个元素.我尝试过一些没有运气的事情.任何人都可以就此提出建议吗?
//html
<div ng-show="accordionCtrl.isNotString(value);" class="accordionContainer" ng-repeat="(key,value) in accordionCtrl.lessons">
<div class="accordionStepBox">
<h4 class="accordionStepTitle">Step {{$index+1}}: {{value.title}}</h4>
<span>Summary: {{value.summary}}</span>
</div>
<div class="accordionCoursesBox">
<div class="accordionCoursesText">Courses</div>
<!-- accordion for suffles -->
<uib-accordion close-others="accordionCtrl.oneAtATime">
<!-- only give accordion to object vals -->
<div class="accordion" ng-show="accordionCtrl.isNotString(value);" ng-repeat="(key,value) in value">
<!-- <uib-accordion-group heading="{{value.title}}" is-open="accordionCtrl.firstIndex($index)"> -->
<uib-accordion-group heading="{{value.title}}">
<div ng-repeat="(key,value) in value">
<div ng-show="accordionCtrl.isNotString(value);" class="accordionSuffleBox">
{{$index+1}}. {{value.title}}
</div>
</div>
<br/>
<button ui-sref="lesson" class="btn btn-default accordionbutton">Start</button>
</uib-accordion-group>
</div>
</uib-accordion>
</div>
</div>
//controller
angular
.module('neuralquestApp')
.controller('AccordionCtrl',AccordionCtrl);
function AccordionCtrl(FirebaseUrl,$firebaSEObject,$firebaseArray) {
var accordionCtrl = this;
var getLessons = getLessons;
accordionCtrl.oneAtATime = true;
accordionCtrl.init = init;
accordionCtrl.init();
accordionCtrl.isNotString = isNotString;
accordionCtrl.firstIndex = firstIndex;
/*======================================
= IMPLEMENTATION =
======================================*/
function init() {
getLessons();
}
function firstIndex(index) {
if(index === 0){
return true;
} else {
return false;
}
}
function getLessons() {
var ref = new Firebase(FirebaseUrl);
accordionCtrl.lessons = $firebaSEObject(ref.child('NeuralNetwork'));
}
function isNotString(val) {
// console.log('val',val);
if(typeof val === "string"){
console.log('is string',val);
return false;
} else {
return true;
}
}
}
解决方法
is-open属性设置为与控制器进行双向绑定,因此您可以执行以下操作:
<div ng-controller="AccordionDemoCtrl">
<uib-accordion>
<div ng-repeat="group in groups">
<uib-accordion-group heading="{{group.title}}" is-open="openIndex[$index]">
{{group.content}}
</uib-accordion-group>
</div>
</uib-accordion>
</div>
angular.module('ui.bootstrap.demo').controller('AccordionDemoCtrl',function ($scope) {
$scope.openIndex = [true];
$scope.groups = [
{
title: 'Group Header - 1',content: 'Group Body - 1'
},{
title: 'Group Header - 2',content: 'Group Body - 2'
},{
title: 'Group Header - 3',content: 'Group Body - 3'
},{
title: 'Group Header - 4',content: 'Group Body - 4'
}
];
});
示例plunk.此外,close-others属性的默认值为true,因此您无需将其显式设置为true. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
