20
私は 'player'というサービスを持っています。フラッシュオブジェクトの読み込みが完了したら、サービスを更新する必要があります。AngularJS:角度の外からサービスを更新する必要があります
mySongPlayer.factory('player', function() {
var isPlayerLoaded = false;
var playerHolder = '';
window.playerReady = function(thePlayer) {
playerHolder = window.document[thePlayer.id];
addListeners();
isPlayerLoaded = true;
}
var flashvars = {
file:"",
autostart:"true",
skin: "/skins/glow/glow.zip",
}
var params = {
allowfullscreen:"false",
allowscriptaccess:"always"
}
var attributes = {
id:"player1",
name:"player1"
}
swfobject.embedSWF("/player.swf", "player_placeholder", "100%", "40", "9.0.115", false, flashvars, params, attributes);
var playObj;
return playObj || (playObj = {
currentId: 'test', currentUrl: 'url', playerHolder: ''
});
});
私は
angular.element(DOMElement).injector().get('player')
を使用してサービスにアクセスする方法を知っているが、私はすでにモジュールで作成されたインスタンスを更新する必要がありながら、それはプレイヤーの新しいインスタンスを返します。これを行う方法はありますか?私はプレーヤーのインスタンスを1つしか必要としませんが、JavaScriptの外部から初期化する必要があります。
なぜ 'scope()。myService'に直接適用できないのですか? 'inject()。get'を' scope()。myService'に使用することの違いは何ですか? – pocesar
この特定の例では、ただし、サービスがスコープのプロパティとして追加された場合にのみ機能しますが、必ずしもそうではありません。ですから、 'injector.get()'は、*すべての*ケースでこれを動作させたい場合に使用する必要があります。 –
'document.querySelector( '[ng-controller]')'を使って得られるものは何ですか?'' [ng-controller] ''や' '[ng-app]''を引数として '' angle.element() 'と同じように動作するようですね? – Superole