尽管我在众多论坛上搜索,但有一段时间我已经陷入困境。如果我的英语不完美,我很抱歉,我希望我能够清楚地了解我并帮助我解决这个问题。
我正在尝试使用Cordova学习一些移动开发。 我想创建一个类似Instagram的应用程序,其中将存储存储器。该应用程序使用两个页面: - 显示所有存储的存储器的页面; - 添加内存的页面。内存存储在本地json文件中。
这是我的代码(暂时): 注意:代码已被翻译以便更好地理解。我希望我没有做出任何翻译错误,与手头的主题无关
addMemory.html(查看以添加内存)
<form role="form" class="col-xs-12">
<div class="form-group">
<label for="title">Title :</label>
<input type="text" id="title" class="form-control" ng-model="souvenir.title" placeholder="Add a memory title" />
</div>
<div class="form-group">
<label for="image">Image :</label>
<button id="image" class="form-control btn btn-default">Add...</button>
</div>
<button class="btn btn-default" ng-click="createMemory()">Create</button>
</form>
addMemoryController.js (添加内存。目前,内存是存储在本地文件中的静态json。稍后会添加动态控件)
app.controller("addMemoryController", function ($scope, $location) {
//Array of all stored memories
$scope.memoriesList = [];
//New memory to add (for now static)
$scope.memory = {
image: "image/moutain.png",
title:""
}
//The function pushes the new memory into the list then save the array
$scope.createMemory = function () {
$scope.memoriesList.push($scope.memory);
$scope.saveArray();
}
//The function save the array into the local file
$scope.saveArray = function () {
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
var requestedBytes = 1024*1024*10; // 10MB
navigator.webkitPersistentStorage.requestQuota (
requestedBytes,
function (grantedBytes) {
window.requestFileSystem(PERSISTENT, grantedBytes, $scope.fileSystemReceived, $scope.errorHandler('requestFileSystem'));
},
$scope.errorHandler
);
$location.path("/");
}
//Function called when the fileSystem is received
$scope.fileSystemReceived = function (fileSystem) {
fileSystem.root.getFile("memories.json", { create: true, exclusive: false }, $scope.fileEntryReceived, $scope.errorHandler('getFile'));
}
//Function called when the fileEntry is received
$scope.fileEntryReceived = function (fileEntry) {
fileEntry.createWriter($scope.fileWriterReceived, $scope.errorHandler('createWriter'));
}
//Function called when the fileWriter is received
$scope.fileWriterReceived = function (fileWriter) {
fileWriter.onwrite = function (evt) {
console.log("write success");
};
var memoriesListText = angular.toJson($scope.memoriesList);
fileWriter.write(memoriesListText);
}
//Error managment
$scope.errorHandler = function (errorMessage) {
return function () { console.log(errorMessage); };
}
});
当我启动我的应用程序时,我的“写入”功能出错: TypeMismatchError:对象的类型与对象关联的参数的预期类型不兼容。
我尝试写一个简单的文本内容,没有任何区别:
fileWriter.write("some text");
我甚至尝试创建一个“.txt”文件,逻辑上没有任何区别。
如果不是文字,我应该作为参数给出什么?我无法提交描述此函数类型签名的文档。
答案 0 :(得分:2)
文件写作者需要一个对象,所以称之为:
var blob = new Blob(["some text"], {type: "text/plain"});
fileWriter.write(blob);
更多信息: https://www.npmjs.com/package/cordova-plugin-file http://www.html5rocks.com/en/tutorials/file/filesystem/
如果您正在搜索关于cordova的信息,请从cordova开始:http://cordova.apache.org阅读文档和博客。互联网上有很多过时的信息。