angularjs maintenir le champ d'application variable selon les itinéraires
Comment puis-je maintenir le modèle pour l'ensemble du parcours. pour exemple j'ai une liste de profils de chargés sur la page d'accueil. La page d'accueil contient également une "charger plus" action de charger des profils plus, fondamentalement pousser des données au modèle. En cliquant sur un profil spécifique, le détail de la vue de profil est activé via des routes. La vue de détail a un bouton de retour qui redirige l'utilisateur vers la page d'accueil. Sur le routage retour à la page d'accueil de données(profils), chargé par le "charger plus" l'action est perdue. J'ai besoin de maintenir le modèle avec l'option "charger plus" précédées de données
Ci-dessous est le code utilisé
/* Controllers */
var profileControllers = angular.module('profileControllers', ['profileServices'])
profileControllers.controller('profileListCtrl', ['$scope','$location', 'Profile','$http',
function($scope,$location, Profile,$http) {
$scope.Profiles = Profile.query(function(){
if($scope.Profiles.length < 3) {
$('#load_more_main_page').hide();
}
});
$scope.orderProp = 'popular';
$scope.response=[];
//LOADMORE
$scope.loadmore=function()
{
$http.get('profiles/profiles.php?profile_index='+$('#item-list .sub-item').length).success(function(response){
if(response) {
var reponseLength = response.length;
if(reponseLength > 1) {
$.each(response,function(index,item) {
$scope.Profiles.push({
UID: response[index].UID,
id: response[index].id,
popular: response[index].popular,
imageUrl: response[index].imageUrl,
name: response[index].name,
tags: response[index].tags,
category: response[index].category
});
});
}
if(reponseLength < 3) {
$('#load_more_main_page').hide();
}
}
});
}
}]);
/* App Module */
var profileApp = angular.module('profileApp', [
'ngRoute',
'profileControllers',
'profileServices',
]);
profileApp.config(['$routeProvider',
function($routeProvider) {
$routeProvider.
when('/profiles', {
templateUrl: 'partials/profile-list.html',
controller: 'profileListCtrl',
resolve: {
deps: function ($q, $rootScope) {
var deferred = $q.defer();
var dependencies = ['js/sort.js'];
$script(dependencies, function () {
$rootScope.$apply(function () {
deferred.resolve();
});
});
return deferred.promise;
}
}
}).
when('/profiles/:profileId', {
templateUrl: 'partials/profile-detail.html',
controller: 'profileDetailCtrl',
}).
when('/profiles/cat/:category', {
templateUrl: 'partials/profile-list-category.html',
controller: 'profileCategoryListCtrl',
}).
when('/create/', {
templateUrl: 'partials/profile-create.html',
controller: 'profileCreateCtrl',
css: ['css/createprofile.css','css/jquery-ui-1.10.4.custom.min.css','css/spectrum.css'],
}).
otherwise({
redirectTo: '/profiles'
});
}]);
J'ai ajouté le code utilisé dans l'application dans ma question, pourriez-vous s'il vous plaît guide comment puis-je mettre à jour la liste-modèle de vue avec précédées de données à partir de la charge plus appel à l'action sur le routage de retour à partir de la vue de détail à la vue de liste?
OriginalL'auteur melwyn pawar | 2014-04-30
Vous devez vous connecter pour publier un commentaire.
Un service est généralement la façon de partager des données entre les points de vue. Parce que c'est un singleton, et n'est pas régénéré sur le changement d'itinéraire, vous pouvez "cache" des données et de les récupérer depuis n'importe quel contrôleur que le service est injecté dans.
La deuxième réponse à cette question, il explique avec le code:
Même les données de plusieurs vues en utilisant AngularJS
OriginalL'auteur Sharondio
Vous pouvez utiliser un AngularJS service de le faire. Les Services sont des singletons et stocker des données à travers des changements d'itinéraire.
Et à utiliser dans votre contrôleur:
dans le contrôleur de votre vue de détail de référence le service (comme le montre l'exemple pour
MyController
etserviceId
). Vous pouvez accéder aux données présentes dans le service entre les contrôleurs. Si pas clair, vous pouvez fournir plus de détails sur vos sources.J'ai mis à jour la question de contenir le contrôleur,loadmore, le code de service utilisé
déplacer le
$http.get(...)
à votre service et mettre en cache les résultats. Si toujours pas clair, vous pouvez créer un plnkr.coJ'ai créé un plunker plnkr.co/modifier/JBj5wV20ZlPnTOCTPwsL?p=catalogue je n'étais pas sûr au sujet de télécharger le fichier php et de la base de données. Pouvez-vous jouer avec des données factices. voici un exemple d'objet renvoyé { UID: 1, id: 1, populaire: 30, imageUrl: "media/images/profile/3.jpg", nom: "Dillion Stac", les balises: [ "#colère", "#putain", "#smart" ], catégorie: [ "expression" ] }
OriginalL'auteur Sebastian
Vous êtes de perdre le
$scope
variables, car Angulaire d'uncontroller
n'est pas un singleton. Il y aura une nouvelle instance de il a généré lorsque vous revenez.Si vous souhaitez stocker n'importe quel type de variables entre la route-les changements, vous pouvez créer un
service
de le faire.Il y a 3 autres réponses en fournissant des liens vers des ressources sur la façon d'utiliser
services
. Si vous avez des questions après avoir regardé ces et d'essayer de mettre en œuvre une solution que je pourrais être en mesure d'aider, mais s'il vous plaît corriger mon code n'est pas une question spécifique. Qu'avez-vous essayer après avoir lu les liens dans les autres réponses?Je suis en train d'essayer d'utiliser le service pour loadmore ainsi, sur le fait que j'ai l'intention de partager le service avec la vue de détail du contrôleur. Je suppose qu'en faisant ainsi, je serai en mesure de partager des données à travers les routes via le service. Je travaille encore sur elle
OriginalL'auteur ivarni
Créer Angulaire de service et de passer les différents itinéraires.
Réponse détaillée ici - https://stackoverflow.com/a/16559855/907388
OriginalL'auteur pbojinov