Я пытаюсь создать простой блог-сайт с помощью AngularJS. Я только начинаю, так что я думаю, что это не лучший способ сделать это, поэтому любые альтернативные предложения приветствуются.AngularJS - Передача параметров в контроллер?
У меня есть файл controller.js с двумя блочными контроллерами. Один, чтобы отобразить список сообщений в блогах, а другой, который отображает содержимое сообщения, включая HTML-файл.
controller.js
myAppControllers.controller('BlogListCtrl', ['$scope', '$http', function ($scope, $http) {
$http.get('articles/articles.json').success(function (articles) {
$scope.articles = articles;
});
}]);
myAppControllers.controller('BlogPostCtrl', ['$scope', '$routeParams', function ($scope, $routeParams) {
$scope.includeFile = 'articles/' + $routeParams.blogPostId + '.html';
}]);
articles.json
[
{
"id": "test-article-one",
"title": "Test Article one",
"author": "Gareth Lewis",
"datePosted": "2015-06-23",
"summary": "This is a test summary"
},
{
"id": "test-article-two",
"title": "Test article two",
"author": "Gareth Lewis",
"datePosted": "2015-06-23",
"summary": "This is a test for article two"
}
]
app.js
when('/blog', {
templateUrl: 'partials/blog-articles.html',
controller: 'BlogListCtrl'
}).
when('/blog/:blogPostId', {
templateUrl: 'partials/blog-post.html',
controller: 'BlogPostCtrl'
}).
блог-post.html
<ng-include src="'partials/header.html'"></ng-include>
<!-- Want to add title, author, datePosted information here... -->
<article class="content">
<ng-include src="includeFile"></ng-include>
</article>
Этот блог объявлений работает отлично. Когда я нажимаю на сообщение в блоге, он также обслуживает содержимое из файла HTML в порядке. Тем не менее, я хочу иметь возможность повторно использовать объекты title
, author
и datePosted
свойствами выбранной статьи в частичном виде blog-post.html. Каков наилучший способ сделать это? Нужно ли мне каким-то образом передать их контроллеру, чтобы перейти к просмотру? Я действительно не хочу передавать их как routeParams. Или мне нужно сделать $ http.get на articles.json и выполнить итерацию, чтобы найти выбранную статью, а затем передать значения свойств обратно в представление?
Спасибо за помощь.
Ваша первая логика контроллера должна быть действительно службой. https://docs.angularjs.org/guide/services –
Возможный дубликат [Передать переменные контроллеру AngularJS, передовая практика?] (http://stackoverflow.com/questions/11703477/pass-variables-to-angularjs-controller -best-practice) –