我试图在 AngularJS 视图中包含一个 FireBreath 插件对象,但是当我尝试渲染视图时出现此错误:
TypeError: Cannot read property 'nodeName' of undefined
我能够成功地将对象包含在视图中,$compile
如下所示:
$("body").append($compile('<object id="plugin" type="application/x-firebreathplugin" width="0" height="0></object>')($scope));
但是,在包含这样的对象后,我无法让我的插件在 JS 中触发事件。
做这样的事情:
plugin = document.getElementById('plugin');
console.log(plugin);
退货
TypeError
在 Chrome 控制台中。但我仍然可以这样做:
plugin.callFunction();
并执行一个 FireBreath 方法。问题是当我尝试在 JS 中触发事件时。无论我尝试什么,我都无法触发该事件。所以这段代码永远不会执行:
var addEvent = function(obj, name, func) {
obj.addEventListener(name, func, false);
}
addEvent(document.getElementById('plugin'), 'firebreathEvent', function(data) {
console.log('data ' + data);
});
var plugin = document.getElementById('plugin');
plugin.functionThatTriggersFireBreathEvent();
有人知道它是否与调用后访问对象有关$compile
吗?我注意到在常规 HTML 中(在使用 AngularJS 之前)在控制台中记录插件会返回:
<JSAPI-Auto Javascript Object>
所以我在想,我使用document.getElementById
后得到的任何东西$compile
都不一样。
更容易的是,如果我可以将<object>
标签包含在 view.html 文件中并显示它,<body class='ng-view'>
但我得到顶部的 TypeError,所以如果有人对此有任何想法,那将是首选。
任何帮助表示赞赏。谢谢。