我是一个菜鸟,仍然对某些事情感到困惑。
我正在使用Angular 1.5.8和Electron,我正在尝试在main.js中选择dialog.showOpenDialog文件时启动视频加载器。
main.js
click(item, focusedWindow) {
dialog.showOpenDialog(
win, {
filters: [{
name: 'Video files',
extensions: ['mkv', 'avi', 'mp4']
}],
properties: ['openFile']
}, (fileNames) => {
if (fileNames === undefined) return;
var videoFilePath = fileNames[0];
win.webContents.send('videoFilePath', videoFilePath);
}
);
}
videoCtrl.js
const electron = require('electron')
const ipcRenderer = electron.ipcRenderer
var app = angular.module('videoModule', []);
app.controller('videoCtrl', function($scope) {
$scope.isVideoOpened = false;
ipcRenderer.on('videoFilePath', function(event, arg) {
$scope.videoPathFile = arg;
$scope.isVideoOpened = true;
});
});
HTML
<div ng-controller="videoCtrl" ng-show="isVideoOpened">
Here {{isVideoOpened}} Here2{{videoPathFile}}
<video id="v1" controls tabindex="0" autobuffer>
<source type="video/mp4; codecs="avc1.42E01E, mp4a.40.2"" src="{{videoPathFile}}" />
</video>
</div>
当我打开视频时,isVideoOpened设置为true并且videoPathFile是正确的(如果我在单独的文件路径中打开此文件路径)。
但是按下开始时文件没有开始缓冲。我做错了什么?
答案 0 :(得分:0)
我使用ng-if
代替ng-show
解决了这个问题。
但有一些细节如here。
基本上ng-if
会生成一个子范围,因此我需要将其放在内部标记中,我还需要使用ng-src
。
<div ng-controller="videoCtrl" >
<div ng-if="isVideoOpened">
<video id="v1" controls class="videoInsert">
<source type="video/mp4; codecs="avc1.42E01E, mp4a.40.2"" ng-src="{{videoPathFile}}" />
</video>
</div>
</div>