У меня есть простой сценарий Angular JS. Я показываю список экспертов в одном представлении, и этот список содержит действия по редактированию эксперта, которые будут выполняться в другом представлении. Эти представления поступают с сервера и не находятся в одном файле. Они не загружаются вместе.
<!-- experts.html -->
<div ng-controller='expertController'>
<!-- showing the list of experts here -->
</div>
И в другом файле на сервере у меня есть:
<!-- expert.html -->
<div ng-controller='expertController'>
<!-- a form to edit/add an expert -->
</div>
И мой контроллер:
app.controller('expertController', function ($scope) {
$scope.getExperts = function () {
_.get('/expert/getexperts/', null, function (data) {
$scope.$apply(function () {
$scope.experts = data;
});
});
};
$scope.editExpert = function (index) {
_.get('/expert/getexpert/', { id: $scope.experts[index].Id }, function (data) {
$scope.$apply(function () {
$scope.expert = data;
});
});
};
});
Однако в форме редактирования данные не будут отображаться. Я проверил области с помощью Batarang, но объект expert
не будет показан.
Проблема заключается в том, что я использую один контроллер для двух (и, возможно, более двух) представлений. Однако, поскольку я прочитал некоторые другие вопросы о SO, кажется, что наилучшей практикой является наличие одного контроллера для HTML-представления.
Однако, я думаю, что более последовательный и последовательный, чтобы выполнить все операции CRUD с помощью expertController
, наряду с другими действиями, связанными с expert
. Я думаю, что немного уродливо иметь expertEditController
для формы редактирования и expertListController
для списка HTML.
Какая здесь самая лучшая практика? Как я могу иметь согласованный и семантически названный контроллер и в то же время поддерживать многие представления. В любой инфраструктуре MVC, которую я видел до сих пор, это что-то рутинное для поддержки многих представлений через один контроллер.