javascript - 使用 ng-submit + ng-model 添加 JSON 对象

标签 javascript json angularjs angularjs-directive yeoman

如何使用 Angular 正确地将对象(嵌套)添加(推送)到 json。

<小时/>

查看现场工作演示:JSbin Link

我有一个具有特定结构的机场工厂:

angApp.factory("Airports", function () {
    var Airports = {};
    Airports.detail = {
        "PDX": {
            "code": "PDX",
            "name": "Portland International Airport",
            "city": "Portland"
        },
        "STL": {
            "code": "STL",
            "name": "Lambert-St. Louis International Airport",
            "city": "St. Louis"

        },
        "MCI": {
            "code": "MCI",
            "name": "Kansas City International Airport",
            "city": "Kansas City"

        }
    };
    return Airports;
});

与 Controller 链接: 如何编写正确的方法将输入推送到 Airport.detail?

.controller("AirportsCtrl", function ($scope, Airports) {
    $scope.formURL = "views/_form.html";
    $scope.currentAirport = null;
    $scope.airports = Airports;
    $scope.setAirport = function (code) {
    $scope.currentAirport = $scope.airports.detail[code];
    };

  $scope.addAirport = function() {
    $scope.airports.push();
  };


});

HTML: 我应该在 ng-model 中放入什么才能将对象正确插入 Airport.details 添加机场 身份证号:

       <div class="form-group">
         <label >code:</label><br>
        <input class="form-control" type="text" placeholder="eg. PDX">
      </div>

      <div class="form-group">
        <label>Name:</label><br>
        <input class="form-control" type="text" ng-model="" placeholder="eg. Portland Intl. Airport">
      </div>

      <div class="form-group">
        <label>City</label><br>
        <input  class="form-control"type="text" ng-model="" placeholder="eg. Portland">
      </div>
  <input class="btn btn-primary" type="submit">
    </form>

最佳答案

存在一些问题,但最大的障碍是工​​厂正在定义一个对象,而不是一个数组。这就是为什么推送不起作用。

您将需要从表单发送一些数据,因此我在 HTML 标记中为您的表单元素绑定(bind)了模型:

<form ng-submit="addAirport()" ng-model="ap" >
    <h4 >Add Airport</h4>
    <div class="form-group">
        <label>ID:</label><br>
        <input class="form-control" type="text" ng-model="ap.id" placeholder="eg. PDX">
    </div>

额外的表单元素被赋予了匹配的模型,ap.codeap.nameap.city。绑定(bind)顶级 ap 对象可以稍后保存一些代码。

addAirport 函数如下所示:

$scope.addAirport = function() {
  $scope.airports.detail[$scope.ap.id] = $scope.ap;
  delete($scope.ap);
};

这只是将 $scope.ap(表单)数据添加到您的 $scope.airports.detail 对象中。 (详细信息对象包含集合)。删除命令重置表单。

这是更新的 jsbin,现在可以添加机场:http://jsbin.com/OGipAVUF/11/edit

关于javascript - 使用 ng-submit + ng-model 添加 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20929667/

相关文章:

javascript - Angularjs - 将指令中的值绑定(bind)到 ng-show/hide 文档中的任何位置

javascript - 如何将我自己的方法添加到 HTMLElement 对象?

javascript - 加载 json 文件到 highchart html 页面

java - 如何将 Retrofit 响应映射到数据模型类?

javascript - 当输入 ng-model 是 ngRepeat 变量时如何从输入数据中获取?

javascript - 我的应用程序在设备上运行缓慢是因为我使用的图像以及如何删除硬编码的宽度和高度

javascript - 选择元素上的 dispatchEvent 更改不能由委托(delegate)处理

javascript - 使用 Google Maps API 从邮政编码获取城市,然后将其写入 JSON?

angularjs - Angular 1.5 单元测试 Controller 需要父组件的 Controller

javascript - 每当我单击 AngularJS 中的按钮时验证空文本字段