Контроллеры AngularJS когда-либо используют более одного метода действия / настройки?
Большинство примеров контроллеров AngularJS, которые я видел, обычно имеют один метод действия, который связывает все для представления. С другой стороны, в контроллерах, которые используют шаблон MVC, а не MVW AngularJS, обычно есть несколько методов действия на контроллер, но это не относится к AngularJS.
Конечно, можно подключить к $ scope (или некоторому другому объекту) любое количество методов, которые выполняют поведение, но все же это похоже на методы действия MVC, так как они автоматически не принимают прямой ввод маршрута.
Я заинтересован, потому что я пытаюсь преобразовать существующее приложение Asp.net MVC в угловое, и я пытаюсь решить лучшую организационную разбивку для контроллеров.
Верны ли мои различные предположения?
Контроллеры AngularJS когда-либо используют более одного метода действия / настройки?
Угловые контроллеры когда-либо разбиты на отдельные действия? Или угловой контроллер имеет более или менее одно действие, хотя маршрутизация и представление могут отличаться?
Обновление:
Требуемый пример - контроллер AngularJS:
myApp.controller('DoubleController', ['$scope', function($scope) {
$scope.double = function(value) { return value * 2; };
}]);
Пример контроллера Asp.Net MVC:
public class CardController : Controller
{
private readonly IService _service;
public CardController(IService service)
{
_service = service;
}
public ActionResult Index(Guid gameId)
{
var model = _service.GenerateCardBuyDisplayModel(gameId);
return View(model);
}
public ActionResult BuyCards(ExecuteBuyModel input)
{
_service.ExecuteBuy(input.GameId, input.CardsToBuy);
return RedirectToAction("Index", "Game", new { id = input.GameId});
}
}
Пример контроллера Ruby on Rails:
class ClientsController < ApplicationController
# This action uses query string parameters because it gets run
# by an HTTP GET request, but this does not make any difference
# to the way in which the parameters are accessed. The URL for
# this action would look like this in order to list activated
# clients: /clients?status=activated
def index
if params[:status] == "activated"
@clients = Client.activated
else
@clients = Client.inactivated
end
end
# This action uses POST parameters. They are most likely coming
# from an HTML form which the user has submitted. The URL for
# this RESTful request will be "/clients", and the data will be
# sent as part of the request body.
def create
@client = Client.new(params[:client])
if @client.save
redirect_to @client
else
# This line overrides the default rendering behavior, which
# would have been to render the "create" view.
render "new"
end
end
end
Если вы посмотрите на эти три примера, AngularJS имеет только один метод конструктора / настройки, в то время как в примере Asp.net MVC есть конструктор и два метода действий. В примере Ruby of rails даже нет видимого конструктора, просто методы действий. Пример Asp.net MVC (или пример Ruby on Rails) аналогичен тому, сколько действий работает в других реализациях MVC. В AngularJS я предполагаю, что есть только один метод действия / конструктора, в который можно было бы добавить любое дополнительное поведение. С другой стороны, пример MVC Asp.net имеет как конструктор, так и два метода действия, которые могут быть направлены по-разному. похож на единый компрессор AngularJS / действие.
1 ответ
Из того, что я могу сказать, контроллеры AngularJS не имеют традиционных методов действий, таких как контроллеры MVC. Вместо этого все, что может сделать контроллер, должно быть определено в методе с одним конструктором или настроено с использованием маршрутизации в конфигурации приложения. Если вам нужна установка, отличная от конструктора, то, вероятно, это хорошее место для использования нового контроллера.
Позже я спросил в угловой комнате IRC:
Угловые контроллеры на самом деле не имеют методов действия, как в других реализациях MVC, таких как Ruby on Rails или Asp.net MVC? право?
на что вафля ответил:
ничего не требуется или дано вам в принципе
а также
это просто базовая структура без "базовых" объектов для расширения или интерфейса для реализации
Робдубя также упомянул:
если вы не хотите, чтобы получить все будущие сексуальные https://gist.github.com/robwormald/bc87cb187e8f96c4e5f0