這種事情是行不通的。您嘗試寫入的文件將位於服務器上;就像現在這樣,它將是一個靜態資源。我建議閱讀Angular資源,here。你可以設置你的服務器端代碼來在json文件上執行CRUD操作,但實際上數據庫是最好的。如果您更喜歡使用json格式,Mongodb是您的最佳選擇; here是提供免費課程的Mongodb大學的鏈接。我過去做過,而且很棒。
現在,對於您的情況中的一些實際幫助: 您可以在您的json文件上執行GET請求,因爲它被視爲靜態資源。但是,POST請求需要服務器端腳本來執行任何操作。
$http.get('api/YOUR_RESOURCE').success(function(data) {
$scope.database = data;
});
$http.post('api/YOUR_RESOURCE', {
data_key: data_value,
data_key2: data_value2
}).success(function(data) {
data[id].available = false;
});
這可能是遠一點的道路上學習角,但這裏的Node.js的服務器代碼片段,用Mongo的數據庫和貓鼬來處理「模式」,可以幫助您得到一個想法如何工作:
var mongoose = require('mongoose'),
YOUR_RESOURCE = mongoose.model('YOUR_RESOURCE');
app.route('/api/YOUR_RESOURCE')
// This should be your GET request; 'api/
.get(
// Get all docs in resource
YOUR_RESOURCE.find().exec(function (err, data) {
if (err) {
return res.status(400).send({
message: SOME_ERROR_HANDLER
});
} else {
res.json(data); // return list of all docs found
}
});)
// Add new doc to database
.post(function (req, res) {
// The keys of the object sent from your Angular app should match
// those of the model
var your_resource = new YOUR_RESOURCE(req.body);
your_resource.save(function (err) {
if (err) {
return res.status(400).send({
message: SOME_ERROR_HANDLER
});
} else {
// returns newly created doc to Angular after successful save
res.json(your_resource);
}
});
);
Here是如何開始與節點的資源列表的SO頁面;我推薦Node,因爲它易於使用,並且它是用JS編寫的。 Mongo大學的課程也通過設置服務器來使用數據庫;您可以選擇幾種風格,如Java,.NET,Python或Node。
上面的示例中有一點遺漏,例如Mongoose模型和節點設置,但如果您選擇閱讀它們,則會在頁面上鍊接的資源中涵蓋這些內容。希望這有助於:)
你不能通過瀏覽器寫文件。使用服務器。 – kidwon
而且您不能發佈到靜態資源文件,只能發佈到具有編程語言接收數據的端點 – charlietfl