我希望下拉列表顯示何時將鼠標懸停在<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.html
<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'),你可以通過原型繼承來訪問你父級的屬性,或者你不創建一個新的作用域。 –