Что такое "var vm = this"; означает в контроллерах angular?
Я просматривал некоторые вещи на github, и я видел внутри controller.js, кто-то поставил следующее:
function ImageController ($scope, $timeout) {
var vm = this;
}
Для чего это используется?
Ответ 1
В этом случае vm означает viewmodel.
Это ярлык, поэтому вместо записи this.someMethod() вы можете использовать vm.someMethod().
Очень часто, когда вы используете синтаксис Controller As, поэтому вы не используете $scope по "аварии".
Кроме того, ключевое слово this может быть беспорядочным для использования, поскольку оно может ссылаться на разные вещи в зависимости от того, где оно используется.
Ответ 2
Почему?: Помогает избежать соблазна использовать методы $scope внутри когда в противном случае лучше избежать их или переместить метод до factory и ссылаться на них с контроллера.