AngularJS Chrome应用程序 - 选择一个本地文件夹 - 未显示

时间:2014-12-14 01:04:12

标签: angularjs google-chrome-app

我正在开发AngularJS Chrome应用,并使用chrome.fileSystem.chooseEntry API,用户可以选择目录。我想向用户显示所选目录,还要将详细信息保存到本地存储中,以便在每次应用加载时使用它。

前一部分 - 向用户显示所选目录似乎不起作用。

这是我的模板:

<div class="content" ng-controller="SelectCompanyController">
    <form role="form">
        <div class="form-group">
            <strong>Add a New Company</strong>
        </div>
        <div class="form-group">
            <label for="companyName">Enter Company Name</label>
            <input id="companyName" type="text" class="form-control" ng-model="newCompany.companyName" style="width:80%"/>
        </div>
        <div class="form-group">
            <label for="location" style="display: block">Select Company Folder Location</label>
            <button id="location" ng-click="getUserSelectedFolder()">Choose Company Folder</button>
            {{newCompany.location}}
        </div>
    </form>
</div>

我的控制器:

app.controller('SelectCompanyController',['$scope','ReadLocalDBDataService',
    function($scope, ReadLocalDBDataService){
        $scope.newCompany={};
        getUserSelectedFolder=function(){
            ReadLocalDBDataService.getUserSelectedFolder().then(function(fileEntry){
                chrome.fileSystem.getDisplayPath(fileEntry, function(displayPath){
                    console.log(displayPath);
                    $scope.newCompany.location=displayPath;
                    console.log($scope.newCompany);
                });
            });
        };
        $scope.getUserSelectedFolder=getUserSelectedFolder;
}]);

我的服务

app.factory('ReadLocalDBDataService',['$q', function($q){
    var getUserSelectedFolder=function(){
        var deferred=$q.defer();
        chrome.fileSystem.chooseEntry({type: 'openDirectory'}, function(fileEntry){
            if(!fileEntry) deferred.reject("Please select the folder where the Companys' files are present");
            else{
                var error = chrome.runtime.lastError;
                if(error) deferred.reject("An error occurred while selecting the folder. Details: "+error);
                else{
                    deferred.resolve(fileEntry);
                }
            }
        })
        return deferred.promise;
    };

    return {
        getUserSelectedFolder: getUserSelectedFolder
    };
}]);

在我的控制器中,我有日志显示该文件夹已设置为〜/ Dropbox /文件夹...为什么这不显示在屏幕上?

编辑: 我刚刚意识到,在我选择文件夹一次后,没有任何反应,但如果我再次选择该文件夹,则会显示。为什么不第一次出现?

1 个答案:

答案 0 :(得分:0)

当我请他查看你的问题时,这是chrome.fileSystem API开发人员的回复。

&#34;这个问题可能会以更容易回答的方式编写。 (当用户可以将问题简化为一个简单的例子时,它会变得更加容易。)我无法立即发现任何问题,但听起来Chrome API部分工作正常,但显示器不是&#39 ; t由于某种原因更新(&#34;在我的控制器中,我有日志显示该文件夹已设置为〜/ Dropbox /文件夹...为什么这不显示在屏幕上?&#34 )。我不知道Angular,所以我无法帮助。&#34;

听起来他的建议是 1.)将示例简化为尽可能简单的内容。 2.)调查第一次显示可能没有更新的原因。