<!DOCTYPE html>
<html>
<head>
<script data-require="angular.js@1.4.3" data-semver="1.4.3" src="https://code.angularjs.org/1.4.3/angular.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body ng-app="myApp">
<h1>Hello Plunker!</h1>
<div ng-controller="myCtrl"></div>
</body>
</html>
// An example on how to privatize members in an AngularJS Factory method, while
// still having getters and setters on the resultant object's prototype, rather
// than reinstantiating those methods for every instance.
var app = angular.module('myApp', []);
app.factory('objectFactory', function(){
return function(opts){
var privObj = {
val:'default'
},
privPrim = false;
function SomeClass(){
var innerPriv = null;
}
SomeClass.prototype.setPrivObj = function(newPriv){
privObj = newPriv;
return this;
};
SomeClass.prototype.getPrivObj = function(){
return privObj;
};
SomeClass.prototype.getPrivPrim = function(){
return privPrim;
};
SomeClass.prototype.setPrivPrim = function(newVal){
privPrim = newVal;
return this;
};
var instance = new SomeClass();
//Object constructor initialization
if(opts){
instance.setPrivObj(opts);
}
return instance;
};
});
app.controller('myCtrl', function(
objectFactory
){
var obj1 = objectFactory();
var obj2 = objectFactory({
val: 'default2'
});
console.log(obj1.getPrivObj(), obj2.getPrivObj(), obj1.getPrivPrim(), obj2.getPrivPrim());
obj1.setPrivObj({val: 'one'});
obj2.setPrivObj({val: 'two'});
obj1.setPrivPrim('True');
obj2.setPrivPrim(true);
console.log(obj1.getPrivObj(), obj2.getPrivObj(), obj1.getPrivPrim(), obj2.getPrivPrim());
obj1.setPrivObj({val: 'three'});
obj2.setPrivObj({val: 'four'});
obj1.setPrivPrim(false);
obj2.setPrivPrim('False');
console.log(obj1.getPrivObj(), obj2.getPrivObj(), obj1.getPrivPrim(), obj2.getPrivPrim());
});
/* Styles go here */