我如何在 meanjs 中存储 ng-repeat 数组形式的数据?

how do i store ng-repeat array form data in meanjs?

我正在使用 meanjs.org 的 MEANJS。 试图存储 deal 的 ng-repeat 数组数据,其中 dealtypedealprice 作为其下的数组,但无法这样做。 我在创建表单中为 ng-repeat 输入标签设置了 addFields,但它不存储数据。这是我的代码。

food.server.model.js

 var FoodSchema = new Schema({
 created: {
   type: Date,
   default: Date.now
 },
name: {
  type: String,
  default: '',
  required: 'Please fill Food name',
  trim: true
},
deal: [{
  dealtype: {
      type: String,
      default: '',
      trim: true
   },
 dealprice: {
    type: String,
    default: '',
    trim: true
  }
 }],
 user: {
  type: Schema.ObjectId,
  ref: 'User'
  }
});

foods.client.controller.js

// initial array setup

var deal = [ { dealtype: '',dealprice: '' }, {dealtype: '',dealprice: '' } ];

 $scope.food = {};
    $scope.food.deal = deal;
    $scope.addItem = function() {
        $scope.food.deal.push({
            dealtype: '',
            dealprice: ''
        });
    };

 // Create new Food
 $scope.create = function (isValid) {
   $scope.error = null;
    if (!isValid) {
    $scope.$broadcast('show-errors-check-validity', 'foodForm');
    return false;
  }

  // Create new Food object
  var food = new Foods({
    name: this.name,
    deal:[{
            dealtype: this.dealtype,
            dealprice: this.dealprice,
          }],
  });

  // Redirect after save
  food.$save(function (response) {
    $location.path('foods/' + response._id);

    // Clear form fields
    $scope.name = '';
    $scope.dealtype = '';
    $scope.dealprice = '';
  }, function (errorResponse) {
    $scope.error = errorResponse.data.message;
  });
};

创建-food.client.view.html

<form name="foodForm" class="form-horizontal" ng-submit="create(foodForm.$valid)" novalidate>
  <fieldset>
    <div class="col-md-12">
        <md-input-container flex="">
        <label >Food Name</label>
        <input type="text" data-ng-model="name" id="name"  required>
    </md-input-container>
</div>
<div ng-repeat="de in food.deal">
   <div class="col-md-6">
       <md-input-container class="">
          <label class="" for="dealtype">Dealtype</label>
          <input type="text" data-ng-model="de.dealtype" id="dealtype"   >
       </md-input-container>
   </div>
   <div class="col-md-6">
      <md-input-container class="">
         <label class="" for="dealprice">Dealprice</label>
         <input type="text" data-ng-model="de.dealprice" id="dealprice"   >
      </md-input-container>
    </div>
</div>
<a href ng:click="addItem()" class="btn btn-small">add item</a>
<button  class="md-primary md-raised width-100 md-whiteframe-5dp" type="submit">Create  Food</button>

<div ng-show="error" class="text-danger">
    <strong ng-bind="error"></strong>
</div>
</fieldset>
</form>

尝试在没有嵌入数组的情况下设置您的架构,并在没有交易的情况下发送。如果可行,您可能需要使用子文档设置架构。

如果您想将交易 属性 设置为子文档,则需要遵循 this。您可以单独为交易定义一个模式。像这样:

var dealSchema = new Schema({ {
  dealtype: {
    type: String,
    default: '',
    trim: true
  },
  dealprice: {
    type: String,
    default: '',
    trim: true
  }
} });

var FoodSchema = new Schema({
  ...,
  deal: [dealSchema]
})