5

Làm cách nào để duy trì mô hình trên các tuyến đường. ví dụ tôi có một danh sách các hồ sơ được tải lên trang chủ. Trang chủ cũng chứa hành động "tải thêm" để tải thêm cấu hình, về cơ bản đẩy dữ liệu vào mô hình. Khi nhấp vào một cấu hình cụ thể, chế độ xem chi tiết cho cấu hình đó được kích hoạt thông qua các tuyến đường. Chế độ xem chi tiết có nút quay lại để chuyển hướng người dùng quay lại trang chủ. Khi định tuyến lại dữ liệu trang chủ (tiểu sử) được tải bởi hành động "tải thêm" bị mất. Tôi cần phải duy trì các mô hình với "nạp thêm" prepended dữ liệuangularjs duy trì biến phạm vi trên các tuyến đường

Dưới đây là các mã được sử dụng

/* 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' 
     }); 
    }]); 
+0

Âm thanh như bạn cần ui-router, duy trì trạng thái xem. https://github.com/angular-ui/ui-router –

+0

@MikeRobinson Tôi đã thêm mã được sử dụng trong ứng dụng vào câu hỏi của tôi, bạn có thể vui lòng hướng dẫn cách tôi có thể duy trì mô hình xem danh sách với dữ liệu đã được thêm trước từ tải không nhiều lời gọi hành động hơn khi định tuyến lại từ chế độ xem chi tiết đến chế độ xem danh sách? –

Trả lời

0

Bạn có thể sử dụng một AngularJS service để làm điều đó. Dịch vụ là đơn và có thể lưu trữ dữ liệu trên các thay đổi tuyến đường.

myModule.factory('serviceId', function() { 
    var shinyNewServiceInstance = { 
    // your data here 
    }; 
    return shinyNewServiceInstance; 
}); 

Và sử dụng nó trong điều khiển của bạn:

controller('MyController', function($scope, serviceId) { 
    // use serviceId here 
}); 
+0

Tôi đang sử dụng một dịch vụ, để tải dữ liệu ban đầu lên trang chủ, tức là danh sách. loadmore thực hiện cuộc gọi qua $ http.get để đẩy dữ liệu vào mô hình. Làm cách nào để liên kết điều này với chế độ xem chi tiết, thật tuyệt vời nếu bạn có thể cung cấp ví dụ. –

+0

trong bộ điều khiển chế độ xem chi tiết của bạn tham chiếu đến dịch vụ (như được hiển thị trong ví dụ cho 'MyController' và' serviceId'). Bạn có thể truy cập dữ liệu có trong dịch vụ trên các bộ điều khiển. Nếu không rõ ràng bạn có thể cung cấp thêm chi tiết về các nguồn của bạn. – Sebastian

+0

Tôi đã cập nhật câu hỏi để chứa bộ điều khiển, loadmore, mã dịch vụ được sử dụng –

0

Bạn đang mất các $scope biến bởi vì trong góc một controller không phải là một singleton. Sẽ có một phiên bản mới được tạo khi bạn điều hướng trở lại.

Nếu bạn muốn lưu trữ bất kỳ loại biến nào giữa thay đổi tuyến đường, bạn có thể tạo service để làm điều đó.

+0

Tôi đã thêm mã được sử dụng trong ứng dụng không, bạn có thể vui lòng hướng dẫn cách tôi duy trì mô hình dữ liệu được thêm vào từ "loadmore" trên định tuyến trở lại từ chế độ xem chi tiết đến chế độ xem danh sách –

+0

Có 3 câu trả lời khác cung cấp liên kết đến tài nguyên về cách sử dụng 'services'. Nếu bạn có bất kỳ câu hỏi cụ thể nào sau khi xem xét và cố gắng triển khai giải pháp tôi có thể lp, nhưng * vui lòng sửa mã của tôi * không phải là một câu hỏi cụ thể. Bạn đã thử làm gì sau khi đọc các liên kết trong các câu trả lời khác? – ivarni

+0

Tôi hiện đang cố gắng sử dụng dịch vụ cho loadmore, khi thực hiện điều đó, tôi dự định chia sẻ dịch vụ với bộ điều khiển chế độ xem chi tiết. Tôi đoán bằng cách làm như vậy tôi sẽ có thể chia sẻ dữ liệu trên các tuyến đường thông qua dịch vụ. Vẫn đang làm việc với nó –

5

Dịch vụ thường là cách được chấp nhận để chia sẻ dữ liệu giữa các chế độ xem. Bởi vì nó là một singleton và không được tái tạo trên thay đổi tuyến đường, bạn có thể "cache" dữ liệu ở đó và lấy nó từ bất kỳ bộ điều khiển mà dịch vụ được tiêm vào.

Câu trả lời thứ hai của câu hỏi này giải thích nó với mã:

Same data in multiple views using AngularJS

+0

Tôi đã thêm mã đang được sử dụng trong câu hỏi, mối quan tâm của tôi là dữ liệu loadmore, khi quay trở lại chế độ xem danh sách từ chế độ xem chi tiết của cấu hình, làm cách nào để duy trì mô hình bằng "tải thêm" dữ liệu được thêm trước đó trước khi đến chế độ xem chi tiết –

Các vấn đề liên quan