У меня есть эта простая разметка:Сфера не распространяется в моей директиве AngularJS?
<div ng-app="superApp" ng-controller="myCtrl">
<superhero> HOVER ME </superhero> {{a}}
</div>
Следующий код изменяет {{a}}
в 444
:
var app = angular
.module('superApp', [])
.controller('myCtrl', ['$scope', function ($scope)
{
$scope.a = 444;
}])
Результат:
HOVER ME 444
Теперь добавьте код для директивы:
app.directive('superhero', [
function()
{
return {
restrict: "E",
controller: function ($scope)
{
$scope.a = 555;
},
link: function (scope, element, attrs)
{
element.bind("mouseenter", function()
{
scope.a = 999;
});
}
}
}
]);
В результате:
HOVER ME 555
Это означает, что одно и то же объем, как контроллер видит.
Но если я парить ярлык, то {{a}}
не меняется на 999
Вопрос
Почему не {{a}}
изменен 999
? разве это не тот же масштаб?
Также - Batarang показывает 2 области применения как ng-app ???
Спасибо. Сколько областей здесь? Я имею в виду, почему Batarang показывает 2? –
Мое понимание - это одна область, разделенная между двумя директивами, но я могу ошибаться. Я знаю, что предоставление 'scope: {}' в определении вашей директивы создает вторую изолированную область для вашей директивы. По какой-то причине ваше редактирование похоже на то, что он определяет ваше приложение целиком дважды. Никогда не слышал о «Batarang», но я бы не ожидал, что это поведение будет вызвано простой директивой, подобной той, которую вы используете. Возможно также, что директива имеет свой собственный охват, но она связана с родителями, но я не мог сказать с уверенностью. – ste2425
Нет директивы 'ng-hover'. То, о чем вы думаете, это «ng-mouseover». Пожалуйста, отредактируйте этот пост –