Nathan Minier
Итак, у вас есть много вариантов того, как вы собираетесь справиться с этим.
Конкретная методология, которую вы хотите использовать, известна в целом как шаблоны страниц и, в частности, как частичные представления или фрагменты HTML, в зависимости от используемого стека.
У Angular есть несколько вариантов того, как с этим справиться. Я покажу вам тот, который мне нравится, который опирается на модуль UI-Router. Мне нравится этот вариант из-за объема контроля, который дает навигационная модель UI-Router на стороне разработки.
UI-маршрутизатор[^]
В этом случае мы будем работать в обратном направлении, потому что это поможет показать, где могут возникнуть некоторые подводные камни. Я начну с HTML-фрагмента, который можно загрузить в представление с помощью встроенного контроллера.
partialOne.html
<div ng-controller="partialOneController">
<p>{{title}}</p>
</div>
<script type="text/javascript">
myApp.controller('partialOneController',['$scope',function($scope){
$scope.title = 'This controller is dynamically loaded, but could' +
'be assigned in the state definition.';
}]);
</script>
Далее давайте определим наш основной вид (мастер-страница для веб-формы peeps).
index.html
<html ng-app="myApp">
<head><!--Include Angular, styles, whatever --></head>
<body ng-controller="primaryViewController">
<!-- This controller holds menus, assigned roles, any application-wide data. I'm not going to bother writing this for this sample, and this controller can be omitted.-->
<header><span>I persist through navigation!</span></header>
<div ui-view="MainContent"><p>This text apperars until ui-sref is called!</p>
</div>
<footer><span>I persist through navigation!</span></footer>
</body>
</html>
Ладно, теперь перейдем к нашему приложению. Я знаю, что это слишком сложно, но это показывает, как настроить таргетинг на определенный контейнер представления на странице, где вы можете делать все виды забавных вещей, если хотите. Использование функций для обеспечения возможностей маршрутизации довольно мощно.
myApp.js
var myApp = myApp || angular.module('myApp',['ui.router'])
.config(['$stateProvider', function($stateProvider){
$stateProvider
.state('navigate',{
url: '/:view',
views: {
'MainContent' : {
templateUrl: function($stateParams){
return $stateParams.view + '.html';
}
}
});
}]);
Вот и все. Все, что осталось, - это вызвать состояние, что вы можете сделать по ссылке или программно.
Чтобы использовать ссылку, Не назначайте href, вместо этого используйте атрибут ui-sref. Ссылка будет выглядеть так:
<a ui-sref="{{navigate({ view: 'partialOne' }) }}">Show PartialOne</a>
Все это немного перепроектировано, чтобы обеспечить один фрагмент для одного представления, но поскольку я предполагаю, что это не ваш окончательный вариант использования, я решил дать вам гибкую версию заранее.