Ba5*_*14n 6 angularjs angular-ui angularjs-ng-repeat angular-ui-bootstrap angularjs-ng-include
我对手风琴有问题:
我尝试做的几乎与演示显示的相同,我有一个对象数组.每个对象都包含一个字符串,即标题标题.它还包含一个字符串,它是另一个HTML-File 的相对路径,它应该是accordion-group的内容.
$scope.groups = [{
groupTitle: "Title1",
templateUrl: "sites/file1.html"
}, {
groupTitle: "Title2",
templateUrl: "sites/file2.html"
}];
Run Code Online (Sandbox Code Playgroud)
此代码位于名为的控制器中AccordionController.在我的HTML中,我在控制器中有这个代码
<accordion>
<accordion-group ng-repeat="group in groups" heading="{{group.groupTitle}}">
<div ng-include="group.templateUrl"></div>
</accordion-group>
</accordion>
Run Code Online (Sandbox Code Playgroud)
ng-include和那些东西有效,但是这些组基本上没有对点击做出反应然后打开或关闭,我也尝试添加is-open指令.使用参数我指向一个布尔数组,它改变了特定的值ng-click
烦人的事情 - 我真的不明白 - 这一切都在Plunker中有效
我也联系了
<link rel="stylesheet" type="text/css" href="styles/bootstrap.min.css" />
<script type="text/javascript" src="scripts/angular.js"></script>
<script type="text/javascript" src="scripts/ui-bootstrap-tpls-0.12.0.js"></script>
Run Code Online (Sandbox Code Playgroud)
并添加bootstrap.ui到我的模块中.
我收到错误消息:TypeError: undefined is not a function在我加载它时在控制台中.
我将不胜感激任何帮助!
Ba5*_*14n 12
我得到了解决方案:
首先,命名控制器AccordionController会产生与angular ui bootstrap的冲突 - 内部控制器的命名方式如下.
我不确定这是否是最佳解决方案,但它对我来说效果很好.
这是HTML:
<div ng-controller="AccordionCtrl">
<accordion class="accordion" close-others="oneAtATime">
<accordion-group ng-repeat="group in groups" is-open="status.isOpen[$index]" >
<accordion-heading>
{{group.groupTitle}} <i class="fa chevron-icon" ng-class="{'fa-chevron-down': status.isOpen[$index], 'fa-chevron-right': !status.isOpen[$index]}"></i>
</accordion-heading>
<div ng-include="group.templateUrl"></div>
</accordion-group>
</accordion>
</div>
Run Code Online (Sandbox Code Playgroud)
当然还有JS:
settings.controller('AccordionCtrl', ['$scope',
function ($scope) {
$scope.oneAtATime = false;
$scope.groups = [{
groupTitle: "Test1",
templateUrl: "file1.html"
}, {
groupTitle: "Test2",
templateUrl: "file2.html"
}, {
groupTitle: "Test3",
templateUrl: "file3.html"
}];
$scope.status = {
isOpen: new Array($scope.groups.length)
};
for (var i = 0; i < $scope.status.isOpen.length; i++) {
$scope.status.isOpen[i] = (i === 0);
}
}]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16101 次 |
| 最近记录: |