我想製作一個飲食形式。它有很多天,吃的類型和產品。我將使用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":[]}
]
},
]
@charlietfl這似乎是多''
的http:// oi63。 tinypic.com/ohs6y8.jpg原創項目只是想讓它更簡單 –
速記;你不需要* select as *語法。只需使用'product.label產品追蹤product.id' – Phil