Каква е разликата между $ range, това и var, в AngularJS?


Отговор 1:

$ range: - $ range е услуга, предоставяна от „$ rangeProvider“. Можете да го инжектирате в контролери, директиви или други услуги, като използвате вградения инжектор на зависимостта на Angular. $ range е като контейнер, в който изгледът на приложението може да използва данни от контролера. Когато използвате $ range, $ range трябва да бъде предаден във функцията на контролерите като параметър.

функция UserCtrl ($ обхват) {
    $ range.bye = function () {сигнал ('....'); };
}


    <бутон ng-click = 'bye ()'> чао 

това: - Когато се извиква функцията на конструктора на контролера, „това“ е контролерът и Когато се извика функция, дефинирана на обект „$ обхват“, „това“ е „обхватът в сила, когато функцията е била извикана“. Това може (или не може!) Да бъде „$ обхватът“, на който е дефинирана функцията. Така че във функцията „това“ и „$ обхват“ може да не е едно и също.

Опитвам се да не използвам тази функция във функция, дефинирана в $ range, тъй като става объркващо кой $ обхват е засегнат, особено като се има предвид, че ng-повторение, ng-включва, ng-превключвател и директивите могат да създадат свои собствени детективни области ,

функция UserCtrl () {
  this.bye = функция () {сигнал ('....'); };
}


  <бутон ng-click = 'uCtrl.bye ()'> чао 

Предпочитам "контролера като", защото ми харесва да скривам обхвата $ и да излагам членовете от контролера на изгледа чрез посреднически обект. Поставяйки това. *, Мога да изложа точно това, което искам да изложа от контролера на изгледа. Можете да го направите и с $ range, просто предпочитам да използвам стандартен JavaScript за това. Всъщност аз го кодирам така: -

var vm = това;

vm.title = 'някакво заглавие';
vm.saveData = функция () {...};

връщане vm;

Това се чувства по-чисто за мен и улеснявам виждането на това, което е изложено на гледката. Забележете Именувам променливата, която връщам „vm“, която означава „viewmodel“. Това е само моята конвенция.

С „$ range“ мога да правя същите неща, така че не добавям или влошавам техниката.

$ range.title = 'някакво заглавие';
$ range.saveData = функция () {...};

С $ range трябва да вмъкна $ range в контролера. Не е нужно да правя това с контролер, освен ако не ми трябва по някаква друга причина (като $ излъчване или часовници, въпреки че се опитвам да избягвам часовници в контролера)

„$ Обхват“ се премахва в Angular 2.0. По този начин, използването на „това“ би бил подход, който другите искат да следват.

Var: - Всички променливи, които дефинирате в „$ range“, напр. във вашия контролер, са налични във вашата HTML маркировка. в случай, че се нуждаете от променлива точно във вашите js функции, можете да я декларирате с var, те са достъпни само локално. Същото е и с функциите. Всяко нещо, което е дефинирано в "$ обхвата", се управлява отвън на контролера, в рамките на директивите, услугите, вашия HTML изглед ..., докато чистата променлива НЕ е


Отговор 2:

$ обхват

Обхватът е обвързващата част между HTML (изглед) и JavaScript (контролер).

Обхватът е обект с наличните свойства и методи. Използва се за получаване на всички контроли върху файловете controller.js.

Обхватът е достъпен както за изгледа, така и за контролера.

това

Когато се извика конструкторната функция на контролера, това е контролерът.

В рамките на функциите, дефинирани в $ range, това е зададено на $ range в сила, където / когато функцията е била извикана ".

Var

Обхватът на променлива се декларира с var е нейният текущ контекст на изпълнение, който е или затваряща функция, или за променливи, декларирани извън която и да е функция, глобален.

Наздраве!


Отговор 3:

Ключовите думи „това“ и „var“ нямат нищо общо с ъглови личности. Това са родните ключови думи на Javascript език.

Var - Използва се за инициализиране или деклариране на всяка променлива в javascript и изпълнява същата роля в amgilar js или всяка друга рамка по този въпрос.

това - Ключовата дума „това“ е широко използвана в програмните езици и има ролята да осигури лечебния контекст на изпълнение. Може да се сравни с местоимение на английски. Той предоставя контекста на изпълняваща функция или този на извикващ обект или глобален контекст, ако се използва в функцията setTimeout.

$ range - $ range е ъглова терминология и представлява обект на обхват на всеки контролер. Всеки контролер в ъгъл има това свойство достъпно по подразбиране (имам предвид готов за инжектиране). Всяко свойство или функция, свързана с обекта на обхвата, е лесно достъпно в шаблона, свързан с контролера. Следователно, $ range може да се разглежда като мост между html шаблона и JavaScript контролера в ъгъл.

За допълнителна справка предлагам да прочетете официални ъглови документи на angularjs.org