我有一个称为“播放器”的服务,并且在Flash对象完成加载后需要更新该服务。
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对其进行初始化。
好吧,我真的看不到您正在做的所有事情,但是您大概只有1/2处。
这是我要描述的工作总结
injector.get()
应该返回与应用程序中的服务相同的Service实例。您可能只是看到一个问题,使您 认为 自己有不同的实例。
因此,您需要做的是:
angular.element(DOMElement).scope()
,然后对其进行调用$apply()
。这是代码:
app.controller('MainCtrl', function($scope, myService) {
// Set a var on the scope to an object reference of the
// (or from the) service.
$scope.myService = myService;
});
app.factory('myService', function(){
return {
foo: 'bar'
};
});
//do a little something to change the service externally.
setTimeout(function(){
//get your angular element
var elem = angular.element(document.querySelector('[ng-controller]'));
//get the injector.
var injector = elem.injector();
//get the service.
var myService = injector.get('myService');
//update the service.
myService.foo = 'test';
//apply the changes to the scope.
elem.scope().$apply();
}, 2000)
其他想法:
$window
服务中,而不是使用window对象来维护服务的可测试性。问题内容: 我的应用程序在$ rootScope中初始化一个对象图,如下所示: …然后使用该对象图中的数据(仅1向绑定),就像这样… 这项工作正常,但是如果我随后(在页面渲染完成之后)尝试更新$ rootScope并将原始对象替换为新对象,则将其忽略。我最初以为这是因为AngularJS保留了对原始对象的引用,即使我已经替换了它。 但是,如果将使用方的HTML包装在控制器中,则可以按预期的方式重复
问题内容: 我的应用程序中有一个弹出模式服务,名为。它只是在上翻转了一些布尔值,从而导致2条指令正确显示/隐藏。这是显示新模态时调用的函数 如您所见,我显示不透明的背景,然后设置了一个名为的变量,该变量随后通过DI传递到我的指令中。但是后来我注意到我的模态没有出现在适当的时候,而是在变量设置为true 之后出现在NEXT摘要循环中。然后,我必须添加作业周围的内容才能使其正常工作。但是,我认为仅当我
我已经将我的项目更新到最新的angular版本。在使用“”进行更新后,我会收到所有内容都是最新的消息。(我的进程中的最后一步。所需的包已经更新) 我怎么才能修好这个。
问题内容: 我想将响应拦截器添加到$ http服务中以进行错误处理。拦截器逻辑包括在必要时使用$ http向服务器发送错误消息, 但是 我不想向服务器发送有关错误消息的错误消息,我的意思是,我想在向服务器发送错误消息时禁用拦截器。 我的想法是创建一个名为“ remote_log”的服务,并将将错误发送到服务器所需的所有代码放入其中。该服务当然将使用$ http服务,并将其放在其依赖项列表中。 然后
问题内容: 我正在尝试学习JavaFX,并将swing应用程序转换为JavaFX。我想做的是使用JavaFX来显示程序的进度。 我以前在Swing中所做的是首先使用自定义JComponent创建一个JFrame。然后让我的主程序调用自定义JComponent的方法,该方法将更改JComponent和repaint()中的形状颜色。 下面给出了我想在JavaFX中实现的目标的想法: 我目前将此作为我
Logcat按摩 **从活动上下文外部调用startActivity()需要标志_Activity_NEW_TASK标志。这真的是你想要的吗?