FireBreath プラグイン オブジェクトを AngularJS ビューに含めようとしましたが、ビューをレンダリングしようとすると、次のエラーが発生します。
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 が発生するので、誰かがそのアイデアを持っている場合は、それが優先されます。
どんな助けでも大歓迎です。ありがとう。