我有一個儀表板式小部件容器,它包含一個標題面板。 我具有其中實現了以下功能的標題面板幾個圖標:在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