mobile safari readonly
by provegard
HTML
<script src="https://code.angularjs.org/1.2.28/angular.js"></script>
<script src="https://code.angularjs.org/1.2.28/angular-route.js"></script>
<div ng-controller="TestController">
<p>{{view.status}}</p>
<br/><br/><br/><br/>
<a href="" ng-click="createScopes()">Wreck havoc</a>
<br/><br/><br/><br/>
<a href="#/viewA">xxx A xxx</a>
<a href="#/viewB">xxx B xxx</a>
<div ng-view=""></div>
</div>
<script type="text/ng-template" id="viewA">This is view A</script>
<script type="text/ng-template" id="viewB">This is view B</script>
JavaScript
m = angular.module("myApp", ["ngRoute"]);
m.config(function ($routeProvider) {
$routeProvider.when("/viewA", { templateUrl: "viewA" });
$routeProvider.when("/viewB", { templateUrl: "viewB" });
$routeProvider.otherwise({redirectTo: "/viewA"});
});
m.run(function ($rootScope) {
$rootScope.view = {
status: "all ok"
};
});
m.factory('$exceptionHandler', function($injector) {
return function(exception, cause) {
var msg = exception.message;
var rs = $injector.get("$rootScope");
rs.view.status = msg;
};
});
m.controller("TestController", function ($scope) {
//$scope.view.status = "Go ahead, click it!";
$scope.createScopes = function () {
var scopes = [];
for (var i = 0; i < 1000; i++) {
try {
scopes.push($scope.$new());
} catch (e) {
$scope.view.status = e.message;
break;
}
}
while (scopes.length) {
scopes.shift().$destroy();
}
$scope.view.status = "No errors";
};
});