2016-02-29 87 views
0

我從一個JSON文件中得到了一些數據的JSON文件,我在HTML中使用這樣從AngularJS得到它的第一:更新在AngularJS

$http.get('js/database.json').success(function(data) { 
    $scope.database = data; 
}); 

而且我想以後更新此JSON文件點擊一個按鈕,在HTML:

<button ng-click="postData(id)">Post</button> 

在角控制器:

$scope.postData = function(id) { 
    $http.post('js/database.json').success(function(data) { 
     data[id].available = false; 
    }); 
}; 

我該怎麼辦呢?我無法得到它的工作...

+0

你不能通過瀏覽器寫文件。使用服務器。 – kidwon

+0

而且您不能發佈到靜態資源文件,只能發佈到具有編程語言接收數據的端點 – charlietfl

回答

3

你不能通過JavaScript寫文件(AngularJS)。

您將通過服務器端並將您的「發佈」請求指向服務器端腳本(即:PHP),並使該腳本完成這項工作。

2

這種事情是行不通的。您嘗試寫入的文件將位於服務器上;就像現在這樣,它將是一個靜態資源。我建議閱讀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模型和節點設置,但如果您選擇閱讀它們,則會在頁面上鍊接的資源中涵蓋這些內容。希望這有助於:)