我正在使用https://github.com/brandly/angular-youtube-embed。
访问播放器(来自文档):
我的代码(另见GitHub):
form.html
<div class="embed-responsive embed-responsive-16by9">
<youtube-video
video-url='formCtrl.skim.url'
player='formCtrl.player'
class='embed-responsive-item'>
</youtube-video>
</div>
player.factory.js
angular.module('skimmableVideosApp')
.factory('Player', function () {
return {
player: {}
};
});
form.controller.js
...
this.player = Player.player;
...
setbox.directive.js
function SetboxCtrl(Player) {
this.set = function() {
console.log(Player.player);
};
}
player
在几个嵌套指令之间共享。将播放器放在工厂中传递给我似乎更干净,而不是使用隔离范围在嵌套指令之间传递它。这就是我想要做的事情。 (注意:使用隔离范围在嵌套指令之间传递它确实有效,我测试了它。)
当我点击一个按钮时,它会运行上面的set
功能,并注销{}
。意味着Player.player
没有更新到我想要的内容。这是为什么?
修改:当我在Player.player = this.player;
中this.player = Player.player;
代替form.controller.js
时,set()
功能会记录undefined
。这让我觉得在表单控制器运行后正在设置播放器。
我也遇到了undefined is not a function
错误,如屏幕截图所示,并且不知道原因。