2016-10-03 37 views
-1

我想製作一個飲食形式。它有很多天,吃的類型和產品。我將使用codepen的代碼來解釋問題。我用ngRepeat創建多個選擇的形式:ngOptions在一個數組內存儲對象

<select ng-repeat="row in rows track by $index" ng-options="product as product.label for product in products" ng-model="diet[0].products[$index]"></select> 

會發生什麼事是,diet.products被認爲是一個對象,而不是作爲對象的數組:

[ { "type": "breakfast", "time": "9:00", "products": { "0": { "label": "Apples", "value": 4, "id": 2 }, "1": { "label": "Apples", "value": 4, "id": 2 } } } ] 

HTML:

<html ng-app="myApp"> 
    <body> 
    <div ng-controller="MyCtrl" ng-init="diet[0].type='breakfast'; diet[0].time='9:00'"> 
     <input type="text" ng-model="diet[0].type"> 
     <input type="text" ng-model="diet[0].time"> 

     <select ng-repeat="row in rows track by $index" ng-options="product as product.label for product in products" ng-model="diet[0].products[$index]">  </select> 
     <p> {{ selected | json }} </p> 
     <p> {{ diet | json }} </p> 
    </div> 
    </body> 
</html> 

MyCtrl.js

var myApp = angular.module('myApp',[]); 
myApp.controller('MyCtrl', ['$scope', function($scope) { 
    $scope.rows=[{},{}]; 
    $scope.products = [ 
     { label: "Apples", value: 4, id: 2 }, 
     { label: "Oranges", value: 2, id: 1 }, 
     { label: "Limes", value: 4, id: 4 }, 
     { label: "Lemons", value: 5, id: 3 } 
    ]; 
     $scope.diet = []; 

}]); 

我不能初始化diet.products作爲一個數組,因爲飲食有很多天和吃的類型。這樣做只適用於0索引數組:

$scope.diet[0].products = []; 

簡單codepen示例。

編輯:完整的飲食創建表單看起來像這樣:你輸入你的飲食的日子,例如10,你有10個可用的標籤。每個標籤意味着一天,幷包含所有這6種飲食類型(早餐,午餐,晚餐等)。接下來,您有6個飲食類型表,如this one,您可以通過在輸入字段中輸入產品並指定數量來添加產品。每一天和每種飲食類型可能都有獨特的產品。

編輯2:我想讓它可以讓你一口氣創造飲食。這不是打算成爲一個單頁應用程序。我在後端使用laravel。

EDIT3: 飲食JS所需的結構

[ 
    { 
     "day":1, 
     "eating_types":[ 
      {"type":"Breakfast","time":"8:00", "products":[]}, 
      {"type":"Lunch","time":"12:00", "products":[]} 
     ] 
    }, 
    { 
     "day":2, 
     "eating_types":[ 
      {"type":"Breakfast","time":"8:00", "products":[]}, 
      {"type":"Lunch","time":"12:00", "products":[]} 
     ] 
    }, 
] 
+0

@charlietfl這似乎是多''