我有一个名为selectable
的指令,当键盘箭头选择项目(在网格中)时,它会向元素添加selected
属性。然后我有另一个名为remote-action
的指令。
是否可能像remote-action="hasAttribute('selected') ? 'Open' : false"
这样的地方hasAttribute
正是我正在寻找的,或者是在不同属性的值内获取另一个属性值的方法。
不是每个selectable
都会有remote-action
,反之亦然,所以我认为我不能在任何一个指令的代码中执行此操作,也有些元素会有孤立的范围而有些元素会赢得'吨。
答案 0 :(得分:0)
我建议采用require
配置选项和selectable
指令上的控制器来公开selected
属性。代码大纲:
app.directive('selectable', function() {
return {
...
controller: function($scope, $element) {
var self = this;
this.selected = false; // (1)
$element.on('...', function() {
$scope.$apply(function() {
self.selected = ... // (2)
});
});
}
};
});
app.directive('remoteAction', function() {
return {
...
require: '?selectable', // (3)
link: function(scope, elem, attrs, selectableCtrl) {
if( selectableCtrl !== null ) { // (4)
scope.$watch( // (5)
function() {
return selectableCtrl.selected;
},
function(newval, oldval) {
...
}
);
}
}
};
});
说明:
selectable
指令有一个公开selected
属性selected
属性 - 在上面的示例中发生DOM事件时remoteAction
指令可选择在同一元素中使用selectable
指令null
作为控制器remoteAction
指令监视selected
属性的值并相应地采取措施