我正在开发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 /文件夹...为什么这不显示在屏幕上?
编辑: 我刚刚意识到,在我选择文件夹一次后,没有任何反应,但如果我再次选择该文件夹,则会显示。为什么不第一次出现?
答案 0 :(得分:0)
当我请他查看你的问题时,这是chrome.fileSystem API开发人员的回复。
&#34;这个问题可能会以更容易回答的方式编写。 (当用户可以将问题简化为一个简单的例子时,它会变得更加容易。)我无法立即发现任何问题,但听起来Chrome API部分工作正常,但显示器不是&#39 ; t由于某种原因更新(&#34;在我的控制器中,我有日志显示该文件夹已设置为〜/ Dropbox /文件夹...为什么这不显示在屏幕上?&#34 )。我不知道Angular,所以我无法帮助。&#34;
听起来他的建议是 1.)将示例简化为尽可能简单的内容。 2.)调查第一次显示可能没有更新的原因。