2015-11-16 4 views
17

Я просматривал некоторые вещи на GitHub, и я увидел внутри controller.js, кто-то поставил следующее:Что такое 'var vm = this;' среднее значение в угловых контроллерах?

function ImageController ($scope, $timeout) { 
    var vm = this; 
} 

Что это используется?

+0

это просто закрытие области для 'this', но' this' является ссылкой на контроллер. ваш 'ImageController', созданный с помощью' new ImageControllers (/ * $ injectionions * /) ' –

ответ

33

vm в данном случае означает viewmodel.

Это ярлык, поэтому вместо написания this.someMethod() вы можете использовать vm.someMethod().

Очень распространенный, когда вы используете синтаксис Controller As, поэтому вы не используете $scope по «аварии».

Кроме того, ключевое слово this может быть беспорядочным, поскольку оно может ссылаться на разные вещи в зависимости от того, где оно используется.

+0

благодарит вас за ответ Sir –

6

Почему ?: Помогает избежать соблазна использовать методы $ области действия внутри контроллера, когда он может быть в противном случае лучше избегать их или переместить метод на фабрику, и ссылаться на них от контроллера.

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

+0

спасибо, что сэр за ответ –

Смежные вопросы