Я в настоящее время разрабатываю приложение AngularJS, и я столкнулся с этой проблемой, или я бы назвал это «промахом», что я не уверен, как структурировать.Отдельный контроллер AngularJS для просмотра деталей?
Вы бы создали другой контроллер для просмотра деталей?
Предположим, я создаю блог. В блоге есть несколько сообщений, и первое, что вы увидите, это первая страница, показывающая множество сообщений, которые я создал. Для этого я хотел бы создать BlogController
, так же, как это:
(function() {
"use strict";
angular.module("BlogApp")
.controller("BlogController", ["$rootScope", "$scope", "PostService", function ($rootScope, $scope, PostService) {
$scope.blogPosts = [];
PostService.getBlogPosts()
.then(function success(response){
// Success!
$scope.blogPosts = response.data;
}, function error(err){
// Error!
});
}])
})()
Это очень простой контроллер, который просто получает все мои сообщения в блоге. Всякий раз, когда я нажимаю сообщение в блоге, я хотел бы перейти к другому представлению, показывая подробности этого сообщения. Я мог бы создать отдельный контроллер для этого, но поскольку у моего BlogController
его не было, я подумал, что могу просто использовать этот контроллер. Я мог бы сделать некоторые действия, основанные на URL, как это:
(function() {
"use strict";
angular.module("BlogApp")
.controller("BlogController", ["$rootScope", "$scope", "PostService", "$location", function ($rootScope, $scope, PostService, $location) {
$scope.blogPosts = [];
var url = $location.url();
switch(url){
case "/blog":
PostService.getBlogPosts()
.then(function success(response){
// Success!
$scope.blogPosts = response.data;
}, function error(err){
// Error!
});
break;
case "/post-details":
// Do something specific for this post, if even anything needs to be done
break;
}
}])
})()
ВОПРОС
Что является наиболее «правильный» способ сделать это? Возможно, «правильный» - это неправильное слово, но я хотел бы услышать некоторый аргумент для обоих методов. Что бы вы сделали? Вы бы создали отдельный контроллер для деталей?
Итак, хотя вы упоминаете компоненты, вы бы пошли с двумя контроллерами? – Detilium
Я упомянул о двух контроллерах, если вы не захотите менять весь дизайн.Лучше всего пойти с компонентом, так как он сделает ваш код повторно используемым +, вы можете легко его протестировать + разложить и разделить проблемы. –