2016-01-24 15 views
9

Od Kątowymi v1.4, to możliwe, aby to zrobić:kątowe dyrektyw: zakres vs bindToController

scope: {}, 
bindToController: { 
    name: "=" 
} 

zamiast starego sposobu prowadzenia:

scope: { 
    name: "=" 
}, 
bindToController: true 

wyjątkiem jest bardziej intuicyjny, czy istnieje różnica między nimi?

+1

Teoretycznie możesz przekazać wiele parametrów do dyrektywy i związać tylko kilka z nich z kontrolerem. Nie mogę wymyślić żadnego ważnego powodu, aby to zrobić, ale jest to możliwe. Z oryginalną składnią było wszystko lub nic. – Claies

+1

http://blog.thoughtram.io/angularjs/2015/01/02/exploring-angular-1.3-bindToController.html Zamówienie tego wnikliwego artykułu z niewielkim wyjaśnieniem – Yerken

+0

Możliwy duplikat [bindToController: Object in dyrektyw] (http : //stackoverflow.com/questions/31414115/bindtocontroller-object-in-directives) – estus

Odpowiedz

6

Pomyśl o bindToController jako ścieżce migracji dla przyszłej wersji Angular.

Preferujemy zapisywanie dyrektyw (lub komponentów) z izolowanym zasięgiem i powiązanie kontrolera z właściwościami, które chcemy przekazać.

Wiążące zmienne z zakresu będą stopniowo znikać.

W nowej wersji kątowej (1.5) nie trzeba używać scope ani bindToController, ponieważ zakres jest izolowany domyślnie, a dla zmiennych wiązania do kontrolera można użyć powiązań.

Jest to również przydatne do zapobiegania użyciu zakresu $ scope. Przeczytaj ten artykuł, jeśli chcesz uzyskać więcej informacji na ten temat: https://toddmotto.com/no-scope-soup-bind-to-controller-angularjs/