Angular controller to handle showing or hiding multiple widgets
You could change your ng-show to use a function:

ng-show="isShown('widgetX')" ng-click="toggleWidget('widgetX')"


And then in your controller:

var widgets = {
    widgetA: {
        shown: true
    },
    widgetB: {
        shown: true
    },
    ...
};

$scope.isShown = function(widgetID) {
    return widgets[widgetID].shown;
}

$scope.toggleWidget = function(widgetID) {
    widgets[widgetID].shown = !widgets[widgetID].shown;
}