Ответ 1
Существует plunker, который должен помочь дать ответ:
Должен ли я использовать UI Router? Страница списка и деталей - это два разных экрана.
В случае, если мы продолжим с состоянием productDetails
, мы что-то потеряем (если даже не много).
В пример мы можем увидеть это определение состояния:
$stateProvider
// parent state for products.detail
// the important thing here is that it must contain
// ui-view="details", because the child is targeting it
.state('products', {
url: '/products',
templateUrl: 'products.list.html',
controller: 'productListCtrl'
})
// here, we will hook into the parent ui-view
// that means one essential thing:
// our scope, will be inherited from parent
.state('products.detail', {
url: '^/:id',
views: {
'detail': {
templateUrl: 'products.detail.html',
controller: 'productDetailCtrl'
}
},
})
До сих пор мы видели стандартные родительские/дочерние состояния вложенных состояний. Затем мы определим под-состояние, а нарисуем корень ui-view=""
// this one is as the productDetails
// it skips parent and targets the root view
// despite of the fact, that it is defined as sub-state of the products !
// we won't get anything from parent state
.state('products.detailAsRoot', {
url: '^/product/:id',
views: {
'@': {
templateUrl: 'products.detail.html',
controller: 'productAsRootCtrl'
}
},
});
Во-первых, наследование в javascript/scopes чрезвычайно объяснено здесь:
Кроме того, важно то, что области в ui-router наследуются способом "вложения вида"
Основной пример:
Имейте в виду, что свойства области только наследуют цепочку состояний, если представления ваших состояний вложены. Наследование свойств области не имеет ничего общего с вложением ваших состояний и всего, что связано с вложением ваших представлений (шаблонов).
Так о чем же все это ответ? Сказать: если мы будем использовать ui-router
, самым большим преимуществом является наследование области. Родитель может что-то сделать однажды... child (ren) может просто повторно использовать его.
Также смотрите: