我试图让我的头围绕角度将DOM元素转换为DOM元素通信:
我们正在整理一组电子学习模板。我们添加的第一个交互式组件是一个子弹(实际上是一个按钮)和一个弹出窗口。子弹和弹出窗口可以位于页面的不同部分,因此它们不在同一个指令的范围内(尽管有一个过度的页面控制,所以它们有共同点)。
我们制作了自定义属性指令来触发每个组件类型的html模板中的加载;这是eng-bullet的指令:
app.directive('engBullet', function() {
return {
restrict: 'A',
replace: true,
templateUrl: 'components/bullet.html',
link: function(scope, element, attrs) {
// following function referenced in bullet.html
scope.showElementByUniqueName = function (showOnClick) {
// remove 'replaces' element
$('#'+$('#'+showOnClick).attr('data-replaces')).addClass('hidden');
// hide all popups (in case another popup is currently visible)
$('.popup').addClass("hidden");
// show selected popup
$('#'+showOnClick).removeClass("hidden");
}
}
};
});
目前,bullet组件被赋予一个'show_on_click'字符串(来自描述页面内容的json文件),并将其传递给项目符号模板(components / bullet.html):
<div class="button bullet" ng-click="showElementByUniqueName( component.bullet.show_on_click )"><p>{{component.bullet.text}}</p></div>
'show_on_click'变量对应于子弹应显示的特定弹出窗口的ID,然后在eng-bullet指令中使用此变量来显示正确的弹出窗口。
如果我在我的弹出模板中添加了ng-show指令,我如何将其绑定到页面不同部分的相应项目符号?
我可以将逻辑放在pageCtrl中,但后来我被告知控制器应该是“精益和愚蠢”。如何以角度方式指定要显示的弹出窗口?