Показать сообщение отдельно
  #5 (permalink)  
Старый 27.11.2015, 11:23
Новичок на форуме
Отправить личное сообщение для tfn2k Посмотреть профиль Найти все сообщения от tfn2k
 
Регистрация: 23.11.2015
Сообщений: 5

Спасибо за инфо и за ссылки.
Но мне кажется что ты не совсем понял мой вопрос (либо я твой ответ ). Давайте еще раз и сначала

"Смотри, твой сниппет кода, который начинается с <input type="text" , в том виде в котором ты его скинул с точки зрения ангуляр приложения "висит в воздухе". Т. е. у тебя есть темплейт, тебе нужно "место для хранения данных"."

Это я понимаю и полностью согласен с описанными вариантами. Но я не согласен с:
"приложения "висит в воздухе". Т. е. у тебя есть темплейт, тебе нужно "место для хранения данных"."

Давайте разберем HTML код (код директивы без изменений):
<!DOCTYPE html>
<html ng-app='myApp'>
/* вот после этой директивы создается $rootScope.
    "When Angular starts to run and generate the view, it will create a binding from the root ng-app
    element to the $rootScope. This $rootScope is the eventual parent of all $scope objects."
    Взято с книги "ng-book The Complete Book on AngularJS" стр. 20
    "Placing ng-app on any DOM element marks that element as the beginning of the $rootScope"
    Взято с книги "ng-book The Complete Book on AngularJS" стр. 84    
*/
        <head>
		<title>AngularJS test</title>
	</head>

	<body>
		<input type="text" ng-model="myUrl" />
 /*Так как директив создающих новый scope не оглашалось, то директива ng-model  в поле видимости
    $rootScope, соответственно записывается в свойство $rootScope,
    "Ng-Model binds to the property given by evaluating the expression on the current scope. If the property
    doesn’t already exist on this scope, it will be created implicitly and added to the scope."
    Все так же книга стр. 93 
*/        
		<div my-directive
			some-attr="{{ myUrl }}"
			my-link-text="Click me to go to Google">
		</div>
/* Вот здесь самое интересное. Эта директива создает новый изолированный scope и компилируется она согласно своему скоупу, в котором (в моем понимании) не должно быть свойства myUrl, но Angular его как-то находит.
*/
		<script src="assets/js/modules/angular.js"></script>
		<script src="assets/js/main.js"></script>
	</body>
</html>


Собственно сам вопрос - как в изолированный scope директивы myDirective попадает свойство myUrl с $rootScope?
Я знаю что пример работает правильно, соответственно есть логическое объяснение принципа работы, вот его я пытаюсь понять

Спасибо.

Последний раз редактировалось tfn2k, 27.11.2015 в 11:29.
Ответить с цитированием