如何通过$ http将对象推入json数组?

时间:2014-11-03 05:21:06

标签: angularjs

我是angularJS的新手。我需要做的是将员工添加到名为" employees.json"的文件中。员工有3个功能,名称,城市和州,可以通过文本框输入。我目前的代码在下面,由于某种原因它无法正常工作。有人能帮助我吗?

    $scope.addEmplyee=function(){
        / create new employee here with user inputs 
        // an Employee object has three properties: name, city, state 
        var name=$scope.name;
        var city=$scope.city;
        var state=$scope.state;

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

        $scope.employee={"name":name,"city":city,"state":state};

        $http.post('/employees.json', {"employee": $scope.employee})
           .success(function(response,  status, headers, config){
              $scope.employees.push($scope.employee);
        });


    };

HTML代码如下

     <div>
        <b>Add Employee :</b>
        <div>Name:<input type="text" ng-model="name"/></div>
        <div>City: <input type="text" ng-model="city"/></div>
        <div>State: <input type="text" ng-model="state"/></div>
        <button class="btn" ng-click="addEmplyee()">Add</button>
    </div>

1 个答案:

答案 0 :(得分:0)

您无法真正从浏览器写入文件。请参阅此问题:Writing a json object to a text file in javascript。但是,您可以将POST请求发送到将执行写入文件的服务器。

话虽如此,我在您的代码中看到了几个问题。您的namecitystate变量未使用var(Python背景?)声明,这使它们成为全局变量,尽管它们似乎是本地的。

您的$scope.employees属性上存在争用条件:即,您似乎依赖于GET请求将在POST请求之前完成的事实,但没有理由这样做,因为这些调用是异步的。怎么会出错?例如,当执行POST请求的回调时,仍然可能无法定义$scope.employees