<html ng-app="app">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body ng-controller="StartController">
<div data-ng-show="project.data.project !== null" class="zoom top-right">
<div>
<form name="zoomForm" data-ng-init="setFormScope(this)">
<img src="/styles/images/16x16/FI_Verkleinern.png" data-ng-click="zoom.decrement()" alt="Zoom -" title="Zoom -" />
<input class="slider" type="range" min="{{zoom.data.lowerBound}}" max="{{zoom.data.upperBound}}" data-ng-model="zoom.data.zoom" />
<img src="/styles/images/16x16/FI_Vergroessern.png" data-ng-click="zoom.increment()" alt="Zoom +" title="Zoom +"/>
<input name="directZoom" type="text" data-ng-minlength="2" data-ng-maxlength="3" data-ng-pattern="/^[0-9]{2,3}$/" data-ng-model="zoom.data.zoom" data-ng-keyup="cancel($event)" />
</form>
</div>
</div>
</body>
</html>
var app = angular.module('app', []);
app.service("zoomService", ["$rootScope", function ($rootScope) {
var data = {
zoom: 100,
upperBound: 200, // TODO: Aus Konfigurationsdatei lesen
lowerBound: 20 // TODO: Aus Konfigurationsdatei lesen
};
return {
data: data,
increment: function() {
if ($rootScope.$root.$$phase != "$apply" && $rootScope.$root.$$phase != "$digest") {
$rootScope.$apply(function() {
if (data.zoom + 1 <= data.upperBound)
data.zoom++;
});
} else {
if (data.zoom + 1 <= data.upperBound)
data.zoom++;
}
},
decrement: function() {
if ($rootScope.$root.$$phase != "$apply" && $rootScope.$root.$$phase != "$digest") {
$rootScope.$apply(function () {
if (data.zoom - 1 >= data.lowerBound)
data.zoom--;
});
} else {
if (data.zoom - 1 >= lowerBound)
data.zoom--;
}
},
reset: function() {
if ($rootScope.$root.$$phase != "$apply" && $rootScope.$root.$$phase != "$digest") {
$rootScope.$apply(function () {
data.zoom = 100;
});
} else {
data.zoom = 100;
}
}
}
}]);
app.controller("StartController", ["$scope", "zoomService", function($scope, zoomService) {
$scope.zoom = zoomService;
}]);
Output
You can jump to the latest bin by adding /latest
to your URL
Keyboard Shortcuts
Shortcut | Action |
---|---|
ctrl + [num] | Toggle nth panel |
ctrl + 0 | Close focused panel |
ctrl + enter | Re-render output. If console visible: run JS in console |
Ctrl + l | Clear the console |
ctrl + / | Toggle comment on selected lines |
ctrl + ] | Indents selected lines |
ctrl + [ | Unindents selected lines |
tab | Code complete & Emmet expand |
ctrl + shift + L | Beautify code in active panel |
ctrl + s | Save & lock current Bin from further changes |
ctrl + shift + s | Open the share options |
ctrl + y | Archive Bin |
Complete list of JS Bin shortcuts |
JS Bin URLs
URL | Action |
---|---|
/ | Show the full rendered output. This content will update in real time as it's updated from the /edit url. |
/edit | Edit the current bin |
/watch | Follow a Code Casting session |
/embed | Create an embeddable version of the bin |
/latest | Load the very latest bin (/latest goes in place of the revision) |
/[username]/last | View the last edited bin for this user |
/[username]/last/edit | Edit the last edited bin for this user |
/[username]/last/watch | Follow the Code Casting session for the latest bin for this user |
/quiet | Remove analytics and edit button from rendered output |
.js | Load only the JavaScript for a bin |
.css | Load only the CSS for a bin |
Except for username prefixed urls, the url may start with http://jsbin.com/abc and the url fragments can be added to the url to view it differently. |