別の兄弟のコントローラーから videogular の controller.API にアクセスしようとしています。
videogular サイトの例を読んで使用し、次のような API を使用しました。
controller.pauseVideo = function() {
controller.API.pause();
};
これは、videogular コントローラー内から正常に動作します。
ナビゲーションコントローラーからビデオを開始および停止したいと思います。このコントローラーは親ではなく、兄弟です。
ナビゲーションで $broadcast イベントを設定しました:
myApp.controller('navController', function($scope) {
$scope.doPause = function() { // added ng-click="doPause();" to nav link
$scope.$parent.$broadcast('myCustomEvent', {
someProp: 'Pause!'
});
}
});
videocontroller に「リスナー」を追加しました: ( http://www.videogular.com/tutorials/videogular-api/でデモとして設定された同様のコントローラーを使用)
myApp.controller('videoController',
["$sce","$scope", function ($sce, $scope) {
var controller = this;
controller.API = null;
controller.onPlayerReady = function(API) {
controller.API = API;
};
... other config settings ...
$scope.$on('myCustomEvent', function (event, data) {
console.log(data);
controller.API.pause();
});
}]
);
ナビのボタンをクリックすると、送信されたデータがコンソールに記録されるため、イベントは機能します。しかし、私もエラーが発生します:
Error: controller.API is null
これが $scope.$on 内から機能しないのはなぜですか?