Electron / AngularJS - 从showOpenDialog

时间:2016-11-22 00:58:46

标签: javascript html angularjs electron

我是一个菜鸟,仍然对某些事情感到困惑。

我正在使用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=&quot;avc1.42E01E, mp4a.40.2&quot;" src="{{videoPathFile}}" />
  </video>
</div>

当我打开视频时,isVideoOpened设置为true并且videoPathFile是正确的(如果我在单独的文件路径中打开此文件路径)。

但是按下开始时文件没有开始缓冲。我做错了什么?

1 个答案:

答案 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=&quot;avc1.42E01E, mp4a.40.2&quot;" ng-src="{{videoPathFile}}" />
        </video>
    </div>
</div>