Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   меню Angular дергается (https://javascript.ru/forum/angular/66909-menyu-angular-dergaetsya.html)

benderalex 17.01.2017 13:34

меню Angular дергается
 
Добрый день

Меню строится через ng-repeat во вьюхе, и при каждом клике на пункт меню оно неприятно вздрагивает и пересобирается. Как это обойти? Спасибо.

ksa 17.01.2017 13:43

Цитата:

Сообщение от benderalex
Меню строится через ng-repeat во вьюхе, и при каждом клике на пункт меню оно неприятно вздрагивает и пересобирается. Как это обойти?

Принести жертву!


Coriolan161 17.01.2017 13:47

benderalex,
надо код показать

benderalex 17.01.2017 14:07

<div class="b-blog__aside-categories wow zoomInUp" data-wow-delay="2.3s">
                        <header class="s-lineDownLeft">
                            <h2 class="s-titleDet">Категории</h2>
                        </header>
                        <nav>
                            <ul class="b-blog__aside-categories-list" ng-repeat="category in categories">
                                <li><a href="#/category/{{category.slug}}">{{category.name}}</a></li>

                            </ul>
                        </nav>
                    </div>


код прост до безобразия )

ksa 17.01.2017 15:12

Цитата:

Сообщение от benderalex
код прост до безобразия

Это огрызок... :D

Нужен полный тестовый пример, который можно запустить и посмотреть чего там и как...

benderalex 17.01.2017 16:13

var app = angular.module("frontApp", ["ngRoute"]);
app.config(function($routeProvider) {
    $routeProvider
        .when("/", {
            templateUrl : "view/main.html"
        })
        .when("/category/:catalogId", {
            templateUrl : "view/catalog.html",
            controller:"CategoryCtrl"
        })
        .when("/product/:productId", {
            templateUrl : "view/product.html",
            controller:"ProductCtrl"
        })
        .when("/catalog", {
            templateUrl : "view/catalog.html",
            controller:"CatalogCtrl"
        })
        .when("/download", {
            templateUrl : "view/download.html"
        })
        .when("/contact", {
            templateUrl : "view/contact.html"
        });
});


app.controller('CategoryCtrl',['$scope','$http','$routeParams',
    function($scope,$http, $routeParams){
        var catalogId = $routeParams.catalogId;
        var url = '/api/item/catalog/'+1+'/'+ catalogId;
        console.log(url);
        $http.get(url).success(function(data) {
            $scope.categories=data.categories;
            $scope.catalog=data.catalog;

        });
    }]);

app.controller('CatalogCtrl',['$scope','$http','$location', '$routeParams',
    function($scope,$http){
        var url = '/api/item/catalog/';
        console.log(url);
        $http.get(url).success(function(data) {
            $scope.categories=data.categories;

            $scope.catalog=data.catalog;

        });
    }]);


<div class="b-blog__aside-categories wow zoomInUp" data-wow-delay="2.3s">
                        <header class="s-lineDownLeft">
                            <h2 class="s-titleDet">Категории</h2>
                        </header>
                        <nav>
                            <ul class="b-blog__aside-categories-list" ng-repeat="category in categories">
                                <li><a href="#/category/{{category.slug}}">{{category.name}}</a></li>

                            </ul>
                        </nav>
                    </div>

ksa 17.01.2017 16:39

benderalex, кто будет собирать эти огрызки в работающий документ?

Coriolan161 17.01.2017 23:20

benderalex,
Попробуй вместо href сделать ng-href

benderalex 18.01.2017 15:03

дело не ng-href (
у меня вызывается контроллер, и каждый раз приходит список категорий. Мне список категорий надо получить только один раз

Coriolan161 18.01.2017 16:25

benderalex,
Ну так и подгрузи их в родительском контролере. Конечно оно будет перерисовываться - у тебя же по ссылке каждый раз роут отрабатывает и привязывается заново контролер. А в этом случае он будет перерисовывать


Часовой пояс GMT +3, время: 19:55.