20
我有一個名爲'player'的服務,當flash對象完成加載時我需要更新服務。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')
訪問服務,但同時,我需要更新的模塊中已經創建的實例返回「播放器」的新實例。有沒有辦法做到這一點?我只想要一個播放器的實例,但我需要從外部javascript初始化它。
爲什麼它不能直接應用於'scope()。myService'?使用'injector()。get'到'scope()。myService'有什麼區別? – pocesar
在這個特殊的例子中,你可以。然而,這隻有在服務被添加爲範圍的屬性時纔有效,但情況並非總是如此。所以'injector.get()'是你必須使用的,如果你想在*所有情況下工作。 –
你從使用'document.querySelector('[ng-controller]')獲得什麼?使用''[ng-controller]'或''[ng-app]'作爲'angular.element()'的參數的 好像工作的一樣好? – Superole