<cart>
지시문 위에 마우스를 올려 놓으면 드롭 다운 목록을 표시합니다. mouseover
이벤트가 확실히 발생하고 scope.showDropdown
을 true로 변경하면 <div class="cart">
은 showDropdown
의 범위를 '='
으로 설정하더라도이 사실을 알지 못합니다. 저는 맞춤 지시어를 처음 접하는 사람입니다. 내가 여기서 무엇을 놓치고 있니?지시어 범위를 인식하지 못하는 내부 요소
.directive('cart', ['Cart', function(Cart){
return {
templateUrl: './templates/cart.html',
restrict: 'E',
scope: {
showDropdown: '='
},
link: function(scope, element, attrs){
scope.showDropdown = false;
scope.items = Cart.getItems;
element.bind('mouseenter', function(){
scope.showDropdown = true;
});
element.bind('mouseout', function(){
scope.showDropdown = false;
})
}
}
}]);
app.controller('cartController', ['$scope', function($scope){
$scope.showDropdown = false;
}])
및
<cart ng-controller="cartController">
Cart
<div class="cart" ng-show="showDropdown">
<ul>
<li rg-repeat="item in items">{{item.name}}</li>
</ul>
</div>
</cart>
그래, 이건 실제로 작동하는 모델입니다. 실제로 마우스를 움직이면 "카트"라는 단어가 사용되었습니다. 템플릿에서 템플릿을 생략 한 이유가 더 많습니다. 지시문은 기본적으로 후계자 컨트롤러의 범위를 공유하므로 잘못 되었습니까? 속성을 통해서만 지시문을 만들 수 있습니까? – Tules
범위를 정의하거나 (scope : {...}) 분리 된 상태가되면 ($ parent.propName을 통해 상위 범위의 속성에만 액세스 할 수 있음) 또는 지시문에 정의한 특성을 통해 새로운 (분리되지 않은) 범위 ('scope : true')를 만들고 prototypical 상속을 통해 부모의 속성에 접근 할 수 있습니다. 새로운 범위를 만들지 않아도됩니다. –