Ответ 1
Вместо того, чтобы иметь его как несколько видов, иметь их как дочерние представления с родителем, являющимся абстрактными. Посмотрите на код ниже,
$stateProvider
.state("product", {
url: '/product',
templateUrl: "/Views/productHome.html",
abstract: true,
controller: "productHomeCtrl"
})
.state('product.thumbnailview', {
url: '/producttv',
templateUrl: "/Views/thumbnailview.html",
controller: "thumbnailViewCtrl",
params: {
param1: null,
param2: null
}
})
.state('product.listview', {
url: '/productlv',
templateUrl: "Views/listview",
controller: "listViewCtrl",
params: {
param1: null,
param2: null
}
})
Теперь вы можете использовать параметры, введя службу stateParams отдельно в своих соответствующих контроллерах. Примечание: Кроме того, у вашего состояния продукта никогда не может быть stateParams вообще.
Примечание. Но если вы попытаетесь достичь состояния продукта напрямую, он не активируется, потому что это состояние abstract Как вы можете обрабатывать разбиение на страницы, имея разметку в productHome.html глобально или соответствующие представления.
Если вы сохраняете разбиение на страницы в productHome.html, вы все равно можете получить доступ к массиву productDetails, используя $scope. $parent.productList и повторно использовать ту же переменную области видимости.
Итак, в этом случае вам понравится ваш productHome.html
<div>
<div > MENU OPTIONS </div>
<div ng-view> </div>
<ul uib-pagination total-items="itemLength" ng-model="currentPage" ng-change="pageChanged()"></ul>
</div>
Эти три объекта могут обрабатываться в любом из трех контроллеров
- itemLength
- CurrentPage
- pageChanged()
Оба эскиза и вид списка будут содержать разметки только для цели макета.
<div>
<div> Thumbnail or List markup </div> very simple you can play with bootstrap grid layout.
</div
Обновление 1
Для такого маршрута
//mydomain.com/products/featured-page_1/deals-age_2/perpage_10/
Используя мое решение, вы можете с ним справиться примерно так:
//mydomain.com/products/featured/page_1/deals/age_2/
Итак, ваши дочерние состояния будут
$stateProvider
.state("product", {
url: '/product',
templateUrl: "/Views/productHome.html",
abstract: true,
controller: "productHomeCtrl"
})
.state('product.featured/', {
url: '/featured/:number',
templateUrl: "/Views/featured.html",
controller: "featuredCtrl",
params: {
number: null,
}
})
.state('product.deals', {
url: '/deals/:number',
templateUrl: "Views/deals.html",
controller: "dealsCtrl",
params: {
number: null
}
})
В featuredCtrl вы можете получить доступ к этим параметрам с помощью
$stateParam.number
В dealsCtrl вы можете получить доступ к этим параметрам с помощью
$stateParam.number
Введите perpage значение в $rootscope или в productHomeCtrl