DOM操作を行うにはディレクティブを使用する必要があります。うまくいけば、videoElementはボタンと同じスコープにあります。その場合、モデルを$ watch()するディレクティブを定義します。
angular.module('myModule', [])
.directive('pauseVideo', function() {
return {
scope: { someProperty: '@pauseVideo' },
link: function(scope, element, attrs) {
scope.$watch('someProperty', function(value) {
var videoElement = $('videoElement')[0];
videoElement.currentTime = time(value);
videoElement.pause();
})
}
}
})
videoElementが使用されているHTML要素にscopeプロパティを追加します。たとえば、ng-clickで操作するプロパティが$ scope.somePropertyの場合:
<div id="videoElement" pause-video="someProperty">
videoElementがボタンと同じスコープにない場合は、コードをコントローラーに配置できます。これは「角度のある方法」に反することを知っていますが、機能していることに満足しています::)
<a ng-click="pauseVideo()">pause video</a>
コントローラ内:
$scope.pauseVideo = function() {
$scope.someProperty = ...;
var videoElement = $('videoElement')[0];
videoElement.currentTime = time (from my model);
videoElement.pause();
}