0
比方说,我有两个可拖动的元素
<div draggable enabled="false"></div>
<div draggable enabled="false"></div>
要启用/禁用我用以下指令的内容:
App.directive('draggable', function() {
return {
restrict:'A',
link: function(scope, element, attrs) {
element.draggable();
scope.$watch('enabled', function (val) {
element.draggable(val === true ? 'enable' : 'disable');
});
}
};});
我已经安装$ watch看起来可以是真/假。 现在我想用我的控制器来改变'enabled'属性。
App.controller('TypeAheadController',function($scope){
//some code
$scope.enabled = true;
});
但是,当我使用这个,所有可拖动的元素被引用。所以他们都被启用或禁用。我认为这很奇怪,因为我期望$ watch可以在每个可拖动元素的范围内查找已启用的值。我的目标是单独启用/禁用可拖动元素。所以我需要一种方法来设置/引用控制器中每个可拖动元素的enabled属性。
如何从外部访问本地范围莫如? 我需要将它设置在控制器内(就像我试图用$ scope.enabled = true所做的那样) – Ray 2014-10-20 18:33:28
@Ray我认为潜在的问题与您将启用的属性绑定到Controller的功能有关属性。如果你想让每个指令都有它自己的'enabled'属性,你需要为每个指令使'enabled'成为一个数组。 – 2014-10-20 20:36:24
“您需要为每个指令将'enabled'变为数组' 您会如何做到这一点? 如果我在我的更新版本中使用隔离范围,我对每个指令都有一个范围。所以这很好,但是我不知道如何从指令外引用它。所以基本上,问题是,如何根据来自指令外部的条件设置可拖动的'enabled'。 – Ray 2014-10-20 21:31:23