在Angular / Ionic的父指令上触发DOM元素方法
Triggering DOM element method on parent directive in Angular / Ionic
我正在尝试使用框架。使用VR光标点击按钮,退出VR体验。
我想要发生的是当光标点击事件在盒子和纸板上被触发时,然后转到vr-video-control指令,这样它就可以在场景中执行exitVR()方法。我知道直接DOM操作应该在"链接"中完成,但公开可用的方法应该在"控制器"中声明-所以你如何在"控制器"的方法中访问"链接"的$element属性?或者有比这更好的方法吗?
现在我不能访问链接到vr-video-control指令的scene元素来触发任何方法。
我的HTML看起来像:
<a-scene vr-video-control>
<a-assets>
<video id="video" src="video/video4.mp4" autoplay loop crossorigin="anonymous"></video>
</a-assets>
<a-videosphere src="#video" rotation="0 180 0">
<a-box id="videoLeftButton" cardboard-cursor-click cardboard-cursor-action="back" color="white" height="2" width="5" position="-7 0 10" rotation="0 -225 0"></a-box>
<a-box id="videoRightButton" cardboard-cursor-click cardboard-cursor-action="forward" color="white" height="2" width="5" position="7 0 10" rotation="0 -135 0"></a-box>
</a-videosphere>
</a-scene>
其中cardboard-cursor-click是一个指令,看起来像这样
function CardboardCursorClick() {
return {
restrict: 'A',
require: '^^vrVideoControl',
scope: {
cardboardCursorAction: '@'
},
link: (scope, element, attrs, videoControl) => {
element.on('cursor-click', () => {
console.log("Cursor click " + scope.cardboardCursorAction);
videoControl.exitVR();
});
}
};
}
export default {
name: 'cardboardCursorClick',
fn: CardboardCursorClick
};
依赖于父指令vr-video-control:
function VRVideoControl() {
return {
restrict: 'AE',
scope: { item: '&' },
controller: ['$scope', function($scope) {
this.exitVR = function(cursorAction) {
//Trigger exitVR() on <a-scene>
}
}]
};
}
export default {
name: 'vrVideoControl',
fn: VRVideoControl
};
通过使用指令中的作用域,我意识到我可以将方法公开暴露给其他控制器,同时在链接方法中保持DOM操作。我还是Angular的新手,所以不确定这是不是最好的方法?
return {
restrict: 'A',
controller: ['$scope', function($scope) {
this.exitVR = function(cursorAction) {
$scope.exitVR(cursorAction);
};
}],
link: (scope, element, attrs) => {
scope.exitVR = function(cursorAction) {
var rawElement = angular.element(element)[0]
rawElement.exitVR();
};
}
};
相关文章:
- 如何在DOM元素上按类型构建此函数
- DOM元素和angular元素之间的主要区别是什么
- 当带有渲染器的DOM元素不在屏幕顶部时,移动了场景的坐标
- 使用jquery创建dom元素会导致ie9出现拒绝访问错误
- 如何在使用Ractive.extend()时引用DOM元素
- 在d3中向DOM元素添加了图像,但现在它赢得了't过渡
- 如何'剪切'DOM元素并将其显示在其他位置
- 转换<a>使用jQuery将文本字符串转换为dom元素
- d3在数据更新时错误地附加了dom元素
- 访问VueJS中的DOM元素
- 在Meteor中如何查找DOM元素(渲染后)
- IE9-添加和删除DOM元素会破坏父keydown事件
- 未捕获错误:元素缓存中id为x的DOM元素与DOM中的元素不同
- 在 ng-if 编译后访问指令中的 DOM 元素
- spin.js/angular spinner:如何将spin定位到DOM元素中(包括plunker演示)
- 如何在dom元素中插入输入标记数据插件
- Mobile Safari、jQuery以及绑定到未来的DOM元素
- 从字符串创建dom元素时添加多个类
- 如何根据客户端的屏幕大小使用javascript更改DOM元素
- 为onClick-hander插入临时DOM元素