angularJS 1.2 を使用しています。angularJs のルーティング機能を使用して、一部のビューを部分的に読み込みます。これが私のルーティングコードです:
var app = angular.module('app', ['ngAnimate', 'ngRoute']).config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
$routeProvider.when('/category/:name', {templateUrl: '<?php echo base_url().'home/filterPlacesView' ?>', controller: places});
$routeProvider.when('/region/:name', {templateUrl: '<?php echo base_url().'home/filterPlacesView' ?>', controller: places});
$locationProvider.html5Mode(true);
}]);
私の見解は次のようになります:
<div ng-controller="places">
<div class="sidebar">
<h3 ng-show="regions.length != 0">أماكن أخرى</h3>
<a href='<?php echo base_url().'region/'; ?>{{region.href_name}}' ng-repeat="region in regions" class='label label-danger'>{{region.name}}</a>
<h3 ng-show="cats.length != 0">تصنيفات أخرى</h3>
<a href='<?php echo base_url().'category/' ?>{{cat.href_name}}' ng-repeat="cat in cats" class='label label-info'>{{cat.name}}</a>
</div>
<div ng-view>
</div>
</div>
places
コントローラーは次のようになります。
function places ($rootScope, $scope, $http, $location){
$scope.places = [];
$scope.regions = [];
$scope.cats = [];
//load more places
$scope.loadMore = function(){
console.log('load more called');
}
//load categories
$scope.getCats = function(){
$scope.regions = [];
$scope.cats = [];
//get data via $http.post request, and the data returned successfully and $scope.cats filled but not reflected in the view
}
//load regions
$scope.getRegions = function(){
$scope.regions = [];
$scope.cats = [];
//get data via $http.post request, and the data returned successfully and $scope.regions filled but not reflected in the view
}
// function that loads the partial page data
$scope.getData = function(){
$scope.getCats();
$scope.getRegions();
/*get partial page data via $http.post request.
data returned successfully and $scope.places filled and reflected in the view
*/
}
//load the data
$scope.getData();
}
ビューが変更されたときに必要なのは、サイドバーのデータも変更されたときです。しかし、これは初めてメイン ページ (index.php など) が読み込まれ、サイド バーが読み込まれ$scope.cats
、$scope.regions
ビューに表示され、ページがルーティングされ$scope.regions
て入力さ$scope.cats
れたがビューが更新されなかった場合に行われます。
ここでこの質問を見つけましたが、これで問題は解決しませんでした。