Ich stieß auf ein seltsames Problem. Ich hatte meine eigene Direktive geschrieben. Ich versuche,AngularJs Akkordeon nicht öffnen mit Is-Open-Attribut
zu verwenden, ist offen
Attribut angeben, wenn Akkordeon Gruppe $scope.state
genannt, basierend auf Modell geöffnet werden muss. Leider ist es die Eigenschaft isOpen ist immer falsch, auch wenn es in checked()
Funktion geändert wird.
Directive.html
<accordion>
<accordion-group class="my-panel-body" ng-class="{'my-panel-heading-checked':state.isOpen,'my-panel-heading-default':!state.isOpen}" is-open="state.isOpen">
<!--Accordion header -->
<accordion-heading id="{{groupId}}" >
<div ng-click="checked()" >
<i class="pull-left glyphicon" ng-class="status"></i> {{title}}
</div>
</accordion-heading>
<!--Accordion content -->
</accordion-group>
</accordion>
Directive.js
angular.module('locale').
directive('accordionList', function() {
return{
restrict: 'A',
scope: {
title: '=',
result: '=',
groupId: '='
},
templateUrl: 'html/accordionList.html',
controller: function($scope){
var glyphicon = 'glyphicon glyphicon-';
var status = glyphicon + 'unchecked';
$scope.state = {
isOpen: false
}
$scope.status = status;
$scope.checked = function(){
console.log($scope.state.isOpen) //It is always false!
if ($scope.state.isOpen) {
$scope.state.isOpen = false;
$scope.status = status;
}
else { //Always entering this part of code!
console.log("FLAG");
$scope.state.isOpen = true; //True only here when invoked.
$scope.status = glyphicon + 'check';
console.log($scope.state.isOpen);
}
}
}
};
});
Ich wäre dankbar für jede Hilfe. Ich habe keine Ahnung, was nicht funktioniert.
Können Sie einen Plünderer oder Geige dafür machen? – varit05