i want to use service as java bean class.
i want to set data on the service and after that get back data into second contollers
plse tell me
sorry for bad english
i want to use service as java bean class.
i want to set data on the service and after that get back data into second contollers
plse tell me
sorry for bad english
Hi @harry_monu,
You can do that with a factory. This is example for quiz:
SERVICE:
.factory('Results', function() {
var data = {
data: {
correct: []
}
};
return {
getAnswers: function() {
return data.data;
},
setAnswers: function(param) {
data.data.correct = param;
}
};
});
CONTROLLER ONE:
.controller('homeCtrl', function($scope, Results) {
$scope.finishGame= function() {
var answers = ["First", "Second", "Third"];
Results.setAnswers(answers);
// show results on another view with different controller
$location.url("/score");
};
});
CONTROLLER TWO:
.controller('scoreCtrl', function($scope, Results) {
$scope.results = Results.getAnswers();
});
thanks savke.
I am doing same thing
cool, happy coding !
Hey savke ,
can you tell me how to reload js file with back button
hmm, put inside function code block, and call function on button click.
$scope.myFunction = function() {
// CODE BLOCK
}
ng-click=“myFunction”
I dont know which logic you have inside js.
I have this problem
var slidingTabsDirective = angular.module(“ionic”).directive(‘ionSlideTabs’, [’$timeout’, ‘$compile’, ‘$interval’, ‘$ionicSlideBoxDelegate’, ‘$ionicScrollDelegate’, ‘$ionicGesture’, function($timeout, $compile, $interval, $ionicSlideBoxDelegate, $ionicScrollDelegate, $ionicGesture) {
return {
require: “^ionSlideBox”,
restrict: ‘A’,
link: function(scope, element, attrs, parent) {
var ionicSlideBoxDelegate;
var ionicScrollDelegate;
var ionicScrollDelegateID;
var slideTabs;
var indicator;
var slider;
var tabsBar;
var options = {
"slideTabsScrollable": true
}
var init = function () {
console.log("ininit");
if(angular.isDefined( attrs.slideTabsScrollable ) && attrs.slideTabsScrollable === "false" ) {
options.slideTabsScrollable = false;
}
var tabItems = '<li ng-repeat="(key, value) in tabs" ng-click="onTabTabbed($event, {{key}})" class="slider-slide-tab" ng-bind-html="value"></li>';
if(options.slideTabsScrollable) {
ionicScrollDelegateID = "ion-slide-tabs-handle-" + Math.floor((Math.random() * 10000) + 1);
tabsBar = angular.element('<ion-scroll delegate-handle="' + ionicScrollDelegateID + '" class="slidingTabs" direction="x" scrollbar-x="false"><ul>' + tabItems + '</ul> <div class="tab-indicator-wrapper"><div class="tab-indicator"></div></div> </ion-scroll>');
}
else {
tabsBar = angular.element('<div class="slidingTabs"><ul>' + tabItems + '</ul> <div class="tab-indicator-wrapper"><div class="tab-indicator"></div></div> </div>');
}
slider = angular.element(element);
var compiled = $compile(tabsBar);
slider.parent().prepend(tabsBar);
compiled(scope);
//get Tabs DOM Elements
indicator = angular.element(tabsBar[0].querySelector(".tab-indicator"));
//get the slideBoxHandle
var slideHandle = slider.attr('delegate-handle');
var scrollHandle = tabsBar.attr('delegate-handle');
ionicSlideBoxDelegate = $ionicSlideBoxDelegate;
if (slideHandle) {
ionicSlideBoxDelegate = ionicSlideBoxDelegate.$getByHandle(slideHandle);
}
if(options.slideTabsScrollable) {
ionicScrollDelegate = $ionicScrollDelegate;
if (scrollHandle) {
ionicScrollDelegate = ionicScrollDelegate.$getByHandle(scrollHandle);
}
}
addEvents();
setTabBarWidth();
slideToCurrentPosition();
};
var addEvents = function() {
ionic.onGesture("dragleft", scope.onSlideMove ,slider[0]);
ionic.onGesture("dragright", scope.onSlideMove ,slider[0]);
ionic.onGesture("release", scope.onSlideChange ,slider[0]);
}
var setTabBarWidth = function() {
if( !angular.isDefined(slideTabs) || slideTabs.length == 0 ) {
return false;
}
tabsList = tabsBar.find("ul");
var tabsWidth = 0;
angular.forEach(slideTabs, function (currentElement,index) {
var currentLi = angular.element(currentElement);
tabsWidth += currentLi[0].offsetWidth;
});
if(options.slideTabsScrollable) {
angular.element(tabsBar[0].querySelector(".scroll")).css("width", tabsWidth + 1 + "px");
}
else {
slideTabs.css("width",tabsList[0].offsetWidth / slideTabs.length + "px");
}
slideToCurrentPosition();
};
var addTabTouchAnimation = function(event,currentElement) {
var ink = angular.element(currentElement[0].querySelector(".ink"));
if( !angular.isDefined(ink) || ink.length == 0 ) {
ink = angular.element("<span class='ink'></span>");
currentElement.prepend(ink);
}
ink.removeClass("animate");
if(!ink.offsetHeight && !ink.offsetWidth)
{
d = Math.max(currentElement[0].offsetWidth, currentElement[0].offsetHeight);
ink.css("height", d + "px");
ink.css("width", d + "px");
}
x = event.offsetX - ink[0].offsetWidth / 2;
y = event.offsetY - ink[0].offsetHeight / 2;
ink.css("top", y +'px');
ink.css("left", x +'px');
ink.addClass("animate");
}
var slideToCurrentPosition = function() {
if( !angular.isDefined(slideTabs) || slideTabs.length == 0 ) {
return false;
}
var targetSlideIndex = ionicSlideBoxDelegate.currentIndex();
var targetTab = angular.element(slideTabs[targetSlideIndex]);
var targetLeftOffset = targetTab.prop("offsetLeft");
var targetWidth = targetTab[0].offsetWidth;
indicator.css({
"-webkit-transition-duration": "300ms",
"-webkit-transform":"translate(" + targetLeftOffset + "px,0px)",
"width": targetWidth + "px"
});
if (options.slideTabsScrollable && ionicScrollDelegate) {
var scrollOffset = 10;
ionicScrollDelegate.scrollTo(targetLeftOffset - scrollOffset,0,true);
}
slideTabs.removeClass("tab-active");
targetTab.addClass("tab-active");
}
var setIndicatorPosition = function (currentSlideIndex, targetSlideIndex, position, slideDirection) {
var targetTab = angular.element(slideTabs[targetSlideIndex]);
var currentTab = angular.element(slideTabs[currentSlideIndex]);
var targetLeftOffset = targetTab.prop("offsetLeft");
var currentLeftOffset = currentTab.prop("offsetLeft");
var offsetLeftDiff = Math.abs(targetLeftOffset - currentLeftOffset);
if( currentSlideIndex == 0 && targetSlideIndex == ionicSlideBoxDelegate.slidesCount() - 1 && slideDirection == "right" ||
targetSlideIndex == 0 && currentSlideIndex == ionicSlideBoxDelegate.slidesCount() - 1 && slideDirection == "left" ) {
return;
}
var targetWidth = targetTab[0].offsetWidth;
var currentWidth = currentTab[0].offsetWidth;
var widthDiff = targetWidth - currentWidth;
var indicatorPos = 0;
var indicatorWidth = 0;
if (currentSlideIndex > targetSlideIndex) {
indicatorPos = targetLeftOffset - (offsetLeftDiff * (position - 1));
indicatorWidth = targetWidth - ((widthDiff * (1 - position)));
}
else if (targetSlideIndex > currentSlideIndex) {
indicatorPos = targetLeftOffset + (offsetLeftDiff * (position - 1));
indicatorWidth = targetWidth + ((widthDiff * (position - 1)));
}
indicator.css({
"-webkit-transition-duration":"0ms",
"-webkit-transform":"translate(" + indicatorPos + "px,0px)",
"width": indicatorWidth + "px"
});
if (options.slideTabsScrollable && ionicScrollDelegate) {
var scrollOffset = 40;
ionicScrollDelegate.scrollTo(indicatorPos - scrollOffset,0,false);
}
}
scope.onTabTabbed = function(event, index) {
addTabTouchAnimation(event, angular.element(event.currentTarget) );
ionicSlideBoxDelegate.slide(index);
slideToCurrentPosition();
}
scope.tabs = [];
scope.addTabContent = function ($content) {
scope.tabs.push($content);
scope.$apply();
$timeout(function() {
slideTabs = angular.element(tabsBar[0].querySelector("ul").querySelectorAll(".slider-slide-tab"));
slideToCurrentPosition();
setTabBarWidth()
})
}
scope.onSlideChange = function (slideIndex) {
slideToCurrentPosition();
};
scope.onSlideMove = function () {
var scrollDiv = slider[0].getElementsByClassName("slider-slide");
var currentSlideIndex = ionicSlideBoxDelegate.currentIndex();
var currentSlide = angular.element(scrollDiv[currentSlideIndex]);
var currentSlideLeftOffset = currentSlide.css('-webkit-transform').replace(/[^0-9\-.,]/g, '').split(',')[0];
var targetSlideIndex = (currentSlideIndex + 1) % scrollDiv.length;
if (currentSlideLeftOffset > slider.prop("offsetLeft")) {
targetSlideIndex = currentSlideIndex - 1;
if (targetSlideIndex < 0) {
targetSlideIndex = scrollDiv.length - 1;
}
}
var targetSlide = angular.element(scrollDiv[targetSlideIndex]);
var position = currentSlideLeftOffset / slider[0].offsetWidth;
var slideDirection = position > 0 ? "right":"left";
position = Math.abs(position);
setIndicatorPosition(currentSlideIndex, targetSlideIndex, position, slideDirection);
};
init();
},
controller: ['$scope',function($scope) {
this.addTab = function($content) {
$timeout(function() {
if($scope.addTabContent) {
$scope.addTabContent($content);
}
});
}
}]
};
}]);
slidingTabsDirective.directive(‘ionSlideTabLabel’, [ function() {
return {
require: “^ionSlideTabs”,
link: function ($scope, $element, $attrs, $parent) {
$parent.addTab($attrs.ionSlideTabLabel);
}
}
}]);
when i click on back button thats time i want to call this file in contoller