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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |