AngularJS 1.x - Factory Example
HTML
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script>
<div ng-app="myApp">
<div ng-controller="miaVarCtrl as a">
<ol>
<li ng-repeat="data in a.datas">
{{data}}
</li>
</ol>
<button ng-click="a.changeInd()">change</button>
</div>
</div>
JavaScript
// Service
function myService(myService1){
var service = {
setIndex:setIndex
};
function setIndex(data) {
var b = ["one","two","three","four"];
angular.forEach(data, function(val,key){
angular.forEach(b, function(vala,valk){
if(val.name == vala) {
val.order = valk+1;
}
})
});
console.log("first",data,myService1);
// myService1.arrangeItems(data);
}
return service;
}
function myService1(){
var service = {
arrangeItems:arrangeItems
};
function arrangeItems(data) {
data.sort(function(a,b){
return a.order-b.order;
})
console.log("second",data);
}
return service;
}
// Controller
function miaVarCtrl(myService){
var vm = this;
vm.datas = [{"name":"one","order":9},{"name":"three","order":7},{"name":"four","order":3},{"name":"two","order":6}];
vm.changeInd = function() {
console.log("click")
myService.setIndex(vm.datas);
}
}
angular.module('myApp', [])
.factory("myService",myService)
.service("myService1",myService1)
.controller("miaVarCtrl",miaVarCtrl);
miaVarCtrl.$inject = ["myService", "myService1"];
myService.$inject = ["myService1"]