我有一个仪表板式小部件容器,它包含一个标题面板。 我具有其中实现了以下功能的标题面板几个图标:在span元素中使用AngularJS ng-class
1)崩溃插件 2)最大化插件 3)发射窗口小部件设置 4)靠近插件
项目#2是一个其中我遇到了麻烦。点击时,我需要用“还原”图标替换最大化图标。
使用折叠行为作为指导,我可以使用ng-class
来切换图标,但我的ng-click
将会不同,因为我在该指令中调用了一个方法。
<div class="widget-header panel-heading">
\t <h3 class="panel-title">
\t \t <span class="widget-title" ng-dblclick="editTitle(widget)" ng-hide="widget.editingTitle">{{widget.title}}</span>
\t \t <form action="" class="widget-title" ng-show="widget.editingTitle" ng-submit="saveTitleEdit(widget)">
\t \t \t <input type="text" ng-model="widget.title" class="form-control">
\t \t </form>
\t \t <span class="label label-primary" ng-if="!options.hideWidgetName">{{widget.name}}</span>
\t \t <span ng-click="removeWidget(widget);" class="glyphicon glyphicon-remove" ng-if="!options.hideWidgetClose"></span>
\t \t <span title="config" ng-click="openWidgetSettings(widget);" class="glyphicon glyphicon-cog" ng-if="!options.hideWidgetSettings"></span>
\t \t <span title="maximize" ng-show="widget.gadgetConfigured" ng-click="maxResizer($event)" class="glyphicon" ng-class="{'glyphicon-resize-full': !widget.maximized, 'glyphicon-plus': widget.maximized}" ></span>
\t \t <span title="collapse" ng-show="widget.gadgetConfigured" ng-click="widget.contentStyle.display = (widget.contentStyle.display === 'none' ? 'block' : 'none')" class="glyphicon" ng-class="{'glyphicon-plus': widget.contentStyle.display === 'none', 'glyphicon-minus': widget.contentStyle.display !== 'none' }"></span>
\t </h3>
</div>
,这里是指令的处理方法最大化:
$scope.maxResizer = function (e) {
// TODO: properly restore the window to original position..
var widget = $scope.widget;
var widgetElm = $element.find('.widget');
var ht_diff = 200; // height differential
widget.setWidth(window.innerWidth);
$scope.widget.setHeight(window.innerHeight-ht_diff);
$scope.$emit('widgetChanged', widget);
$scope.$apply();
$scope.$broadcast('widgetResized', {
width: window.innerWidth,
height: window.innerHeight-ht_diff
});
// this will refresh the chart width within the container - 03/30/2015 BM:
kendo.resize($(".k-chart"));
var pixelHeight = widgetElm.height();
// kendo chart - refreshes chart height within the container - 03/30/2015 B
var chart = widgetElm.find('.k-chart').data("kendoChart");
if (chart != undefined) {
chart.setOptions({ chartArea: { height: pixelHeight - (pixelHeight * .10) } });
chart.resize($(".k-chart"));
}
widget.maximized = true;
}
正如你所看到的,我有一个属性设置为真/假widget.contentStyle.maximized
。
有人能帮我弄清楚我要去哪里错了吗?也就是说,最大化图标仍然存在,因此不会更改为加号图标。
你在哪里设置'widget.contentStyle.maximized'?如果这是一个布尔值,则不能将它与字符串“true”和“false”匹配,只需删除这些双引号即可。或者,更好的方法是通过一个真实/有益的检查来改变你的ng类:'ng-class =“{'glyphicon-resize-full':!widget.contentStyle.maximized,'glyphicon-plus':widget.contentStyle.maximized }“' – floribon 2015-04-01 21:33:47
我像往常一样只是一个白痴。它不是'widget.contentStyle.maximized'。它只是'widget.maximized' – 2015-04-01 21:52:23
@floribon - 你的真理声明对角度更有意义。这不是最终的答案,但非常有帮助。我的问题是一个真正的错误。再次感谢您的指导,因为当我得到您的意见时,它总是有帮助的。 – 2015-04-01 21:54:27