I have followed the guidelines on angular-ui/ui-router wiki, to only load my images and text when the data is ready.
I don't get any errors, but it doesn't seem to be working. I'm new to Angular JS, so please excuse my lack to expertise.
My Plnkr: http://plnkr.co/edit/4jZuBwm8TI42U6ZvWIPJ?p=preview
The code below is slightly different from my Plnkr (due to providing a working demo).
index.js
var app = angular.module('myApp', ['ngAnimate', 'ngCookies', 'ui.router'])
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('home', {
url: '/',
templateUrl: 'app/main/main.html',
controller: 'MainCtrl'
})
.state('about', {
url: '/about',
templateUrl: 'app/about/about.html',
controller: 'AboutCtrl'
})
.state('work', {
resolve: {
customPromise: function($q, $timeout) {
var deferred = $q.defer();
$timeout(function() {
deferred.resolve('all assets have loaded!');
}, 1000);
return deferred.promise;
}
},
abstract: true,
template: '<div ui-view="portfolio" class="page-work" autoscroll="true" data-loading="{{1}}"></div>'
})
.state('work.details', {
url: '/work/:workId',
views: {
'portfolio@work': {
templateUrl: 'app/work/work.html',
controller: 'WorkCtrl'
}
}
});
$urlRouterProvider.otherwise('/');
});
work.controller.js
'use strict';
var app = angular.module('myApp');
app.controller('WorkCtrl', ['$scope', '$stateParams', '$http', '$location', function($scope, $stateParams, $http, $location, customPromise) {
$scope.customPromise = customPromise;
if (!$stateParams.workId) {
$location.path('/');
}
$http.get('projects/' + $stateParams.workId + '.json').success(function(data) {
$scope.work = data;
$scope.pageClass = 'page-work'; // only use to add class for ui view
//function for next previous
var currentWorkIndex;
var l = $scope.allWorks.length;
for (var i = 0; i < l; i++) {
if ($scope.allWorks[i].id === $stateParams.workId) {
currentWorkIndex = i;
break;
}
}
var prevWorkIndex = (currentWorkIndex !== 0) ? (currentWorkIndex - 1) : (l - 1);
var nextWorkIndex = (currentWorkIndex !== l - 1) ? (currentWorkIndex + 1) : (0);
$scope.prevWork = $scope.allWorks[prevWorkIndex].id;
$scope.nextWork = $scope.allWorks[nextWorkIndex].id;
});
}]);
Any help is most appreciated. Thanks!