javascript - AngularJS 中的 Firebreath 对象

标签 javascript c++ angularjs firebreath

我尝试在 AngularJS View 中包含 FireBreath 插件对象,但是当我尝试渲染 View 时出现此错误:

TypeError: Cannot read property 'nodeName' of undefined

我能够使用$compile成功地将对象包含在 View 中像这样:

$("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,所以如果有人对此有任何想法,那将是首选。

感谢任何帮助。谢谢。

最佳答案

如果有人感兴趣,因为我无法触发该事件,所以我点击了此链接:

http://colonelpanic.net/2010/12/firebreath-tips-asynchronous-javascript-calls/

(我认为是你的博客@taxilian)将数据返回给 JS。

插件代码:链接中的很好的例子。

JS 代码:

//attach FireBreath Object to AngularJS View
$("body").append($compile('<object id="plugin" type="application/x-firebreathplugin" width="1" height="1"><param name="onload" value="pluginLoaded"/></object>')($scope));

var callback = function(data) {
    //data is an object
    console.log(data.resultFromFireBreath);
}

plugin = document.getElementById("plugin");
plugin.getData(callback);

这必须暂时有效,直到有人能够弄清楚如何在 $compile 之后将事件附加到插件对象。

关于javascript - AngularJS 中的 Firebreath 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15351830/

相关文章:

javascript - 组件路由器中的绑定(bind) - Angular 1.5

javascript - 将 ID 的路径作为页面路径

c++ - 当另一个窗口关闭时关闭无模式对话框

c++ - 在进行阻塞调用之前,线程无法使用外部变量...

javascript - 在运行时更新常见的 AngularJS HTTP header

html - 如何使用 angularJs 从 json 值呈现 HTML 标记

javascript - 站点使网络浏览器突然停止并在某些 IE 浏览器中关闭

javascript - 比较JS创建对象的方式

javascript - 如何使用 jQuery 清除 Spring 表单字段?

c++ - 内联函数编译