2015-11-16 8 views
17

Przeglądam właśnie jakieś rzeczy na github i zobaczyłem wewnątrz controller.js, ktoś włożył następujące:Co znaczy "var vm = this;" w kontrolerach kątowych?

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

Co to służy?

+0

to tylko zamknięcie zakresu dla 'this', ale' this' jest łączem do kontrolera. twój 'ImageController' utworzony za pomocą' new ImageControllers (/ * $ zastrzyki * /) ' –

Odpowiedz

33

vm w tym przypadku oznacza viewmodel.

Jest to skrót, więc zamiast pisać this.someMethod() można użyć vm.someMethod().

Bardzo często, gdy używasz składni Controller As, więc nie powinieneś używać $scope przez "wypadek".

Również słowo kluczowe this może być kłopotliwe w użyciu, ponieważ może odnosić się do różnych rzeczy w zależności od miejsca, w którym jest używane.

+0

dziękuję za odpowiedź –

6

Dlaczego ?: Pomaga uniknąć pokusy stosując metody $, zakres wewnątrz kontrolera kiedy może inaczej być lepiej ich unikać lub przenieść metodę do fabryki, i odwoływać się do nich ze sterownika.

można sprawdzić pełny John Papa Angular Style aby dowiedzieć się głębiej ...

+0

dziękuję Sir za odpowiedź –