Что такое "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 и ссылаться на них с контроллера.

вы можете проверить полный John Papa Angular Style, чтобы узнать глубже...