Что такое "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, чтобы узнать глубже...