1

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れたがビューが更新されなかった場合に行われます。

ここでこの質問を見つけましたが、これで問題は解決しませんでした。

4

0 に答える 0