Я недавно начал изучать и использовать AngularJS, и я до сих пор не понял, о какой концепции.
Мой вопрос: в моем приложении у меня есть контроллер, который использует $http
для извлечения данных из моего back-end, как только он будет инициализирован. После отличной обучающей программы CodeSchool на Угловое я пришел с этим:
app.controller("agentController", function ($http) {
var agentsCtrl = this;
agentsCtrl.agents = [];
$http.get("getAgents").success(function (data) {
agentsCtrl.agents = data;
});
...
HTML:
<div ng-controller="agentController as agentCtrl">
<div ng-repeat="agent in agentCtrl.agents">
...
Это прекрасно работает, но я не ясно, почему я должен был бы объявить контроллер в качестве переменная внутри себя, используя this
. Из того, что я понимаю, это потому, что, сделав это, я могу позвонить в службу $http
, где ключевое слово this
вернет неправильный охват. Это верно?
Я обнаружил, что это также работает:
app.controller("agentController", function ($http, $scope) {
$scope.agents = [];
$http.get("getAgents").success(function (data) {
$scope.agents = data;
});
HTML:
<div ng-controller="agentController as agentCtrl">
<div ng-repeat="agent in agents">
...
Я предполагаю, что это работает, потому что я явно впрыскивать объем и использовать его в рамках услуги. Кроме того, HTML теперь немного отличается. В первом случае мне нужно явно позвонить agentCtrl.agents
, а с помощью области просто позвоните по номеру agents
. Это все еще так, потому что переменная теперь объявлена в области, а не в контроллере? Это верно?
Какова наилучшая практика использования в подобных случаях?
Спасибо!
То, что мне было интересно. Спасибо за Ваш ответ! – RiccardoNovaglia