не уверен что правильно понял что ты хочешь.
пример отделения данных
<!DOCTYPE HTML>
<html>
<head> </head>
<body>
<button id="add"> добавить товар </button>
<div id="cart"> </div>
<script>
store=function(){
this.data=[];
this.event={};
};
store.prototype={
fire:function(name,options){
for (item in this.event[name]) this.event[name][item](options);
},
on:function(name,fun){
if (typeof this.event[name]=="undefined") this.event[name]=[];
this.event[name].push(fun);
},
add:function(data){
this.data.push(data);
this.fire('change');
},
get:function(){
//бла бла
},
each:function(fun){
var data=this.data,
i=0,
len=this.data.length;
for(;i<len;i++){
fun(data[i],i,this)
}
}
}
//контролёр
function test(){
// заполняем данными
var m=new store(),
el=document.getElementById('add'),
cart=document.getElementById('cart');
el.addEventListener('click',function(){
m.add({price:100,name:"хреновина"});
});
m.on('change',function(){
var sum=0,text="";
m.each(function(e){
sum+=e.price;
text+=e.name+" за "+ e.price+"$<br/>";
})
if (sum>500) text=text+"вы золотой покупатель"
else if (sum>300) text=text+"вы серебрянный покупатель";
cart.innerHTML=text;
})
};
test();
</script>
</body>
</html>